文章目錄
- GOF-23 設計模式分類
- 一、從目的分類
- 1. 創建型(Creational)模式
- 2. 結構型(Structural)模式
- 3. 行為型(Behavioral)模式
- 二、從范圍分類
- 1. 類模式(Class Pattern)
- 2. 對象模式(Object Pattern)
- 三、分類說明
- 從封裝變化角度對模式分類
- 一、組件協作
- 定義
- Template Method(模板方法模式)
- Observer / Event(觀察者/事件模式)
- Strategy(策略模式)
- 二、單一職責
- Decorator(裝飾器模式)
- Bridge(橋接模式)
- 三、對象創建
- Factory Method(工廠方法模式)
- Abstract Factory(抽象工廠模式)
- Prototype(原型模式)
- Builder(建造者模式)
- 四、對象性能
- Singleton(單例模式)
- Flyweight(享元模式)
- 五、接口隔離
- Fa?ade(外觀模式)
- Proxy(代理模式)
- Mediator(中介者模式)
- Adapter(適配器模式)
- 六、狀態變化
- Memento(備忘錄模式)
- State(狀態模式)
- 七、數據結構
- Composite(組合模式)
- Iterator(迭代器模式)
- Chain of Responsibility(責任鏈模式)
- 八、行為變化
- Command(命令模式)
- Visitor(訪問者模式)
- 九、領域問題
- Interpreter(解釋器模式)
GOF-23 設計模式分類
一、從目的分類
1. 創建型(Creational)模式
- 核心目標:應對需求變化對對象創建時具體類型實現的影響
- 實現方式:將對象創建的職責延遲到子類或其他對象
- 典型模式:工廠方法、抽象工廠、單例、建造者、原型
2. 結構型(Structural)模式
- 核心目標:應對需求變化對對象結構的影響
- 實現方式:通過類繼承或對象組合構建更靈活的結構
- 典型模式:適配器、裝飾器、代理、組合、橋接
3. 行為型(Behavioral)模式
- 核心目標:應對需求變化對多個交互對象的影響
- 實現方式:通過類繼承或對象組合劃分職責
- 典型模式:觀察者、策略、命令、狀態、模板方法
二、從范圍分類
1. 類模式(Class Pattern)
- 關注點:類與子類的靜態關系
- 實現方式:依賴繼承機制(編譯時確定)
- 典型模式:模板方法、工廠方法、抽象工廠
2. 對象模式(Object Pattern)
- 關注點:對象間的動態關系
- 實現方式:依賴組合/聚合(運行時確定)
- 典型模式:策略、裝飾器、觀察者、代理
三、分類說明
分類維度 | 創建型 | 結構型 | 行為型 |
---|---|---|---|
目的 | 解決對象創建問題 | 解決對象結構問題 | 解決對象交互與職責劃分問題 |
范圍 | 可能涉及類模式/對象模式 | 主要為對象模式 | 主要為對象模式 |
從封裝變化角度對模式分類
一、組件協作
定義
現代軟件專業分工之后的第一個結果是“框架與應用程序的劃分”,“組件協作”模式通過晚期綁定,來實現框架與應用程序之間的松耦合,是二者之間協作時常用的模式。
Template Method(模板方法模式)
定義算法骨架,延遲部分步驟到子類。
Observer / Event(觀察者/事件模式)
一對多依賴關系,狀態變化時通知觀察者。
Strategy(策略模式)
封裝可替換的算法策略,動態切換行為。
二、單一職責
Decorator(裝飾器模式)
動態添加職責,避免類爆炸。
Bridge(橋接模式)
分離抽象與實現,獨立擴展兩者。
三、對象創建
Factory Method(工廠方法模式)
定義對象創建接口,由子類實現具體創建。
Abstract Factory(抽象工廠模式)
創建一組相關或依賴的對象族。
Prototype(原型模式)
通過復制原型對象創建新實例。
Builder(建造者模式)
分步構建復雜對象。
四、對象性能
Singleton(單例模式)
確保類只有一個實例,全局訪問點。
Flyweight(享元模式)
共享細粒度對象,減少內存消耗。
五、接口隔離
Fa?ade(外觀模式)
簡化復雜子系統的接口。
Proxy(代理模式)
控制對目標對象的訪問。
Mediator(中介者模式)
集中管理對象交互,降低耦合。
Adapter(適配器模式)
適配不兼容接口,促進復用。
六、狀態變化
Memento(備忘錄模式)
保存和恢復對象狀態。
State(狀態模式)
對象行為隨內部狀態改變。
七、數據結構
Composite(組合模式)
樹形結構組合對象。
Iterator(迭代器模式)
順序訪問聚合對象元素。
Chain of Responsibility(責任鏈模式)
鏈式傳遞請求,靈活處理。
八、行為變化
Command(命令模式)
將請求封裝為對象,支持參數化和日志記錄。
Visitor(訪問者模式)
對元素集合執行操作,分離算法與結構。
九、領域問題
Interpreter(解釋器模式)
定義語言語法并解釋執行。