經典的gof 23種設計模式,目錄大綱查看。算法
1. Singleton(單例模式)設計模式
保證一個類只有一個實例,並提供訪問它的全局訪問點。ui
2. Abstract Factory(抽象工廠模式)設計
提供一個建立一系列相關或相互依賴對象的接口,而無需指定它們具體的類。代理
3. Factory Method(工廠方法模式)日誌
定義一個建立產品對象的工廠接口,將實際建立工做推遲到子類中。server
4.Prototype(原型模式)對象
用原型實例指定建立對象的種類,而且經過拷貝這些原型建立新的對象。接口
5.Builder(建造者模式)原型
將一個複雜的構建與其表示相分離,使得一樣的構建過程能夠建立不一樣的表示。
6.Adapter(適配器模式)
把一個類的接口變換成客戶端所期待的另外一種接口,從而使本來接口不匹配而沒法在一塊兒工做的兩個類可以在一塊兒工做。
7.Facade(外觀模式)
爲子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
8.Proxy(代理模式)
爲其餘對象提供一種代理以控制對這個對象的訪問。
9.Flyweight(享元模式)
運用共享技術有效地支持大量細粒度的對象。
10.Composite(組合模式)
將對象組合成樹形結構以表示「部分-總體」的層次結構。Composite(合成的複合的)模式使得用戶對單個對象和組合對象的使用具備一致性。
11.Bridge(橋接模式)
將抽象部分與實現部分分離,使它們均可以獨立的變化。
12.Decorator(裝飾模式)
動態地給一個對象添加一些額外的職責。就增長功能來講,Decorator(油漆工)模式相比生成子類更爲靈活。
13.Template Method(模板方法模式)
定義一個操做中的算法的骨架,而將一些步驟延遲到子類中。Template Method使得子類能夠不改變一個算法的結構便可重定義該算法的某些特定步驟。
14.Strategy(策略模式)
定義一系列的算法,把它們一個一個封裝起來,而且使它們可相互替換。本模式使得算法能夠獨立於它的客戶而變化。
15.State(狀態模式)
容許一個對象在其內部狀態改變時改變它的行爲。對象看起來彷佛修改了它的類。
16.Chain Of Resp.(職責鏈模式)
使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關係。將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象能處理請求爲止。
17.Command(命令模式)
將一個請求封裝爲一個對象,從而使你可用不一樣的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可撤消的操做。
18.Observer(觀察者模式)
定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時, 全部依賴於它的對象都獲得通知並被自動更新。
19.Mediator(中介模式)
用一箇中介對象來封裝一系列對象的交互。中介者使得各對象不須要顯式相互引用,從而使其鬆散耦合,並且能夠獨立地改變它們之間的交互。
20.Visitor(訪問者模式)
實現經過統一的接口訪問不一樣類型元素的操做,而且經過這個接口能夠增長新的操做而不改變元素的類。
21.Interpreter (解釋器模式)
給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
22.Iterator (迭代模式)
它把對容器中包含的內部對象的訪問委讓給外部類,使用Iterator按順序進行遍歷訪問。
23.Memento(備忘錄模式)
在不破壞封裝的前提下,捕獲一個對象的內部狀態,並在該對象以外保存這個狀態。這樣就能夠將該對象恢復到原先保存前的狀態。