GoF 的 23 種設計模式有兩種分類方法,即根據模式的目的來分和根據模式的做用的範圍來分。設計模式
1. 根據目的來分ide
根據模式是用來完成什麼工做來劃分,這種方式可分爲建立型模式、結構型模式和行爲型模式這 3 種。佈局
- 建立型模式:用於描述「怎樣建立對象」,它的主要特色是「將對象的建立與使用分離」。提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種建立型模式。
- 結構型模式:用於描述如何將類或對象按某種佈局組成更大的結構,提供了代理、適配器、橋接、裝飾、外觀、享元、組合等 7 種結構型模式。
- 行爲型模式:用於描述類或對象之間怎樣相互協做共同完成單個對象都沒法單獨完成的任務,以及怎樣分配職責。提供了模板方法、策略、命令、職責鏈、狀態、觀察者、中介者、迭代器、訪問者、備忘錄、解釋器等 11 種行爲型模式。
2. 根據做用範圍來分spa
根據模式是主要用於類上仍是主要用於對象上來分,這種方式可分爲類模式和對象模式兩種。設計
- 類模式:用於處理類與子類之間的關係,這些關係經過繼承來創建,是靜態的,在編譯時刻便肯定下來了。工廠方法、(類)適配器、模板方法、解釋器屬於該模式。
- 對象模式:用於處理對象之間的關係,這些關係能夠經過組合或聚合來實現,在運行時刻是能夠變化的,更具動態性。除了以上 4 種,其餘的都是對象模式。
3.圖解代理
![](http://static.javashuo.com/static/loading.gif)
註解:對象
GOF:《Design Patterns: Elements of Reusable Object-Oriented Software》(《
設計模式》一書),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。這幾位做者常被稱爲"四人組(Gang of Four)"。