o適配器:用來把一個接口轉化成另外一個接口,如 java.util.Arrays#asList()。java
o橋接模式:這個模式將抽象和抽象操做的實現進行了解耦,這樣使得抽象和實現能夠獨立地變化,如JDBC;緩存
o組合模式:使得客戶端看來單個對象和對象的組合是同等的。換句話說,某個類型的方法同時也接受自身類型做爲參數,如 Map.putAll,List.addAll、Set.addAll。app
o裝飾者模式:動態的給一個對象附加額外的功能,這也是子類的一種替代方式,如 java.util.Collections#checkedList|Map|Set|SortedSet|SortedMap。ui
o享元模式:使用緩存來加速大量小對象的訪問時間,如 valueOf(int)。代理
o代理模式:代理模式是用一個簡單的對象來代替一個複雜的或者建立耗時的對象,如 java.lang.reflect.Proxyorm
o抽象工廠模式:抽象工廠模式提供了一個協議來生成一系列的相關或者獨立的對象,而不用指定具體對象的類型,如 java.util.Calendar#getInstance()。對象
o建造模式(Builder):定義了一個新的類來構建另外一個類的實例,以簡化複雜對象的建立,如:java.lang.StringBuilder#append()。接口
o工廠方法:就是 一個返* 回具體對象的方法,而不是多個,如 java.lang.Object#toString()、java.lang.Class#newInstance()。get
o原型模式:使得類的實例可以生成自身的拷貝、如:java.lang.Object#clone()。原型
o單例模式:全局只有一個實例,如 java.lang.Runtime#getRuntime()。
o責任鏈模式:經過把請求從一個對象傳遞到鏈條中下一個對象的方式,直到請求被處理完畢,以實現對象間的解耦。如 javax.servlet.Filter#doFilter()。
o命令模式:將操做封裝到對象內,以便存儲,傳遞和返回,如:java.lang.Runnable。
o解釋器模式:定義了一個語言的語法,而後解析相應語法的語句,如,java.text.Format,java.text.Normalizer。
o迭代器模式:提供一個一致的方法來順序訪問集合中的對象,如 java.util.Iterator。
o中介者模式:經過使用一箇中間對象來進行消息分發以及減小類之間的直接依賴,java.lang.reflect.Method#invoke()。
o空對象模式:如 java.util.Collections#emptyList()。
o觀察者模式:它使得一個對象能夠靈活的將消息發送給感興趣的對象,如 java.util.EventListener。
o模板方法模式:讓子類能夠重寫方法的一部分,而不是整個重寫,如 java.util.Collections#sort()。