目录
創建型模式
結構型模式
行為型模式
物件導向設計原則
參考
外部連結
將不變性抽象化。
不同模式可以互相組合搭配。
Software design pattern
解密“设计模式”
創建型模式
Creational pattern (創建型模式)
著重於物件的創建。
Abstract factory pattern (抽象工廠模式)
產品可以由不同工廠所生產,將工廠抽象化。
Builder pattern (創造者模式)
將創造一複雜物件的流程抽象化,並確保流程上每一步驟均被執行。客戶端透過 director,director 再透過 builder 創建物件。
Factory method pattern (工廠方法模式)
構建並傳回物件的函式。
Prototype pattern (原型模式)
具有 clone 函式的物件,可用來複製出多個相同物件。
Singleton pattern (獨體模式)
私有化建構子。提供一個取得實體的接口,並由該接口判斷是否需要產生新的實體。
結構型模式
Structural pattern (結構型模式)
著重於類別間的關係。
Adapter (轉接器模式)
轉接器負責匹配兩者之間的介面。
Bridge pattern (橋接模式)
利用 CARP (合成/聚合複用原則) 解耦類別之間的關係。
Composite pattern (組合模式)
整體與部分可以被一致對待。
Decorator pattern (裝飾模式)
動態為物件加上屬性,而非直接修改物件加上屬性。
Facade pattern (外觀模式)
由單一類別負責操作多個類別的組合調用,類似於基金操作。
Flyweight pattern (享元模式)
共用物件,並將變因抽出成外部變數。
Proxy pattern (代理模式)
提供和被代理人相同的介面,並內含被代理人實體。客戶端只和代理接觸,代理再將需求轉發給被代理人執行。
行為型模式
Behavioral pattern (行為型模式)
著重於類別之間的溝通。
Chain-of-responsibility pattern (職責鏈模式)
串接回調函式,使其有機會處理同一事件。
Command pattern (命令模式)
將類別方法抽象成命令類。
Interpreter pattern (解釋器模式)
設計小型程式語言。每一個表達式皆有一個 interpret 接口,用以解釋 (執行) 自身。
Iterator pattern (迭代器模式)
類別提供迭代接口,以便在集合內被存取。
Mediator pattern (仲介者模式)
仲介者類別知道系統中的所有類別,系統中的類別只知道仲介者類別。類別溝通時,均透過仲介者類別轉發訊息。
Memento pattern (備忘錄模式)
類別提供保存/回復其內部狀態的接口。
Observer pattern (觀察者模式)
當一類別狀態改變,如何通知所有相依類別的方式。
Delegation pattern (委託模式)
observer 註冊回調函式至 subject,當 subject 狀態更新,調用已註冊的回調函式。
State pattern (狀態模式)
當狀態轉換過多時,將狀態抽象成類別,並在類別之內負責狀態轉換。
Strategy pattern (策略模式)
提煉不同演算法的相同介面。透過一個上下文類別 (context) 保存演算法實體。客戶端只和該上下文類別接觸,上下文類別再調用演算法實體運行演算法。
Template method pattern (範本方法模式)
將演算法共同部分抽象化,將其細節部分延遲至子類別實現。
Visitor pattern (訪問者模式)
如果欲訪問的元素類別固定,可以將欲訪問的內容抽象化成訪問者類別。
物件導向設計原則
Single responsibility principle (單一職責原則)
簡化類別的工作。
Open/closed principle (開放/封閉原則)
多擴展,少修改。當遇到需求改動時,建立抽象以便隔離將來可能的改動,改以擴展應付需求。
Dependency inversion principle (依賴倒轉原則)
針對接口 (interface) 而非底層實現 (implementation) 撰寫程式。
Liskov substitution principle (Liskov 替換原則)
父類別必須可以用子類別加以抽換,而不影響程式運行。
Law of Demeter (迪米特法則)
透過第三方負責兩個類別之間的溝通,盡可能對類別解耦。
Reflection (反射)
可以在運行時,根據字串選擇要實體化何種類別。
參考
JDK里的设计模式
Examples of GoF Design Patterns
外部連結
非關語言: 設計模式
伍迷家园
Catalog of Patterns of Enterprise Application Architecture
.NET Design Patterns