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