目錄
- 設計模式分類
建立型設計模式:
- Singleton Pattern(單例模式)
- Prototype Pattern(原型模式)
- Factory Method Pattern(工廠方法模式)
- Abstract Factory Pattern(抽象工廠模式)
- Builder Pattern(建造者模式)
結構型設計模式:
- Adapter Pattern(擴充卡模式)
- Bridge Pattern(橋接模式)
- Composite Pattern(組合模式)
- Decorator Pattern(裝飾者模式)
- Façade Pattern(外觀模式)
- Flyweight Pattern(享元模式)
- Proxy Pattern(代理模式)
行為型設計模式:
- Chain of Responsibility Pattern(職責鍊模式)
- Command Pattern(指令模式)
- Interpreter Pattern(解釋器模式)
- Iterator Pattern(疊代器模式)
- Mediator Pattern(中介者模式)
- Memento Pattern(備忘錄模式)
- Observer Pattern(觀察者模式)
- State Pattern(狀态模式)
- Strategy Pattern(政策模式)
- Template Method Pattern(模闆方法模式)
- Visitor Pattern(通路者模式)
Simple Factory Pattern(簡單工廠模式)
GoF中認為簡單工廠模式是工廠方法的一個特例。
結構

例子
優缺點
優點:
優點:
簡單,結合單例模式更加友善和節省資源。
缺點:
增加新的産品時,需要修改工廠類的if…else邏輯,不符合開閉原則。
Factory Method Pattern(工廠方法模式)
意圖
定義一個用于建立對象的接口,讓子類決定執行個體化哪一個類。Factory Method 使一個類的執行個體化延遲到其子類。
适用性
• 當一個類不知道它所必須建立的對象的類的時候。
• 當一個類希望由它的子類來指定它所建立的對象的時候。
• 當類将建立對象的職責委托給多個幫助子類中的某一個,并且你希望将哪一個幫助子類是代理者這一資訊局部化的時候。
結構
參與者:
• Product(抽象産品)
— 定義工廠方法所建立的對象的接口。
• ConcreteProduct(具體産品)
— 實作Product接口。
• Creator(抽象工廠類)
— 聲明工廠方法,該方法傳回一個 Product類型的對象。 Creator也可以定義一個工廠方 法的預設實作,它傳回一個預設的 ConcreteProduct對象。
— 可以調用工廠方法以建立一個 Product對象。
• ConcreteCreator(具體工廠類)
— 重定義工廠方法以傳回一個 ConcreteProduct執行個體。
例子
優缺點
優點:
首先,良好的封裝性,代碼結構清晰。一個對象建立是有條件限制的,如一個調用者需要一個具體的産品對象,隻要知道這個産品的類名(或限制字元串)就可以了,不用知道建立對象的艱辛過程,降低子產品間的耦合。
工廠方法模式是典型的解耦架構。高層子產品隻需要知道産品的抽象類,其他的實作類都不用關心,符合迪米特法則,我不需要的就不要去交流;也符合依賴倒置原則,隻依賴産品類的抽象;當然也符合裡氏替換原則,使用産品子類替換産品父類,沒問題!