1. 程式人生 > >設計模式總結之Factory Method Pattern(工廠方法模式)

設計模式總結之Factory Method Pattern(工廠方法模式)

目錄

建立型設計模式: 結構型設計模式: 行為型設計模式:

Simple Factory Pattern(簡單工廠模式)

GoF中認為簡單工廠模式是工廠方法的一個特例。

結構

 

例子

 

優缺點

優點:
優點:

簡單,結合單例模式更加方便和節省資源。

缺點:
增加新的產品時,需要修改工廠類的if…else邏輯,不符合開閉原則。

Factory Method Pattern(工廠方法模式)


意圖

定義一個用於建立物件的介面,讓子類決定例項化哪一個類。Factory Method 使一個類的例項化延遲到其子類。

適用性

•當一個類不知道它所必須建立的物件的類的時候。
•當一個類希望由它的子類來指定它所建立的物件的時候。
•當類將建立物件的職責委託給多個幫助子類中的某一個,並且你希望將哪一個幫助子類是代理者這一資訊區域性化的時候。


結構

 
參與者:
• Product(抽象產品) 
— 定義工廠方法所建立的物件的介面。 
• ConcreteProduct(具體產品) 
— 實現Product介面。
• Creator(抽象工廠類) 
— 宣告工廠方法,該方法返回一個 Product型別的物件。 Creator也可以定義一個工廠方 法的預設實現,它返回一個預設的 ConcreteProduct物件。 
— 可以呼叫工廠方法以建立一個 Product物件。 
• ConcreteCreator(具體工廠類) 
— 重定義工廠方法以返回一個 ConcreteProduct例項。 


例子

 

優缺點

優點:

首先,良好的封裝性,程式碼結構清晰。一個物件建立是有條件約束的,如一個呼叫者需要一個具體的產品物件,只要知道這個產品的類名(或約束字串)就可以了,不用知道建立物件的艱辛過程,降低模組間的耦合。

工廠方法模式是典型的解耦框架。高層模組只需要知道產品的抽象類,其他的實現類都不用關心,符合迪米特法則,我不需要的就不要去交流;也符合依賴倒置原則,只依賴產品類的抽象;當然也符合里氏替換原則,使用產品子類替換產品父類,沒問題!


相關推薦

設計模式總結Factory Method Pattern工廠方法模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Simple Factory Pattern(簡單工廠模式) GoF中認為簡單工廠模式是工廠方法的一個特例。 結構  例子  優缺點 優點: 優點: 簡單,結合單例模式更加方便和節省資源。 缺點: 增加新的

模板方法模式( Template Method Pattern ): 工廠方法模式的情侶

參考書籍: 《Design Patterns: Elements of Reusable Object-Oriented Software》 模板方法模式和工廠方法模式分別隸屬於行為模式(Behavioral Pattern)和建立類模式(建立型模式),

設計模式總結TemplateMethod Pattern模版方法模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: TemplateMethod Pattern(模版方法模式) 意圖 定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。Template Method使得子類可以不改變一個演算法的結構即可重定義該演算法的

設計模式工廠模式工廠方法模式、簡單工廠模式、抽象工廠模式

工廠模式 工廠模式是最常用的設計模式之一,這種型別的設計模式屬於建立設計模式,它提供了一種建立物件的最佳方式。 優點:1、一個呼叫者想建立一個物件,只要知道其名稱就可以了。 2、擴充套件性高,如果想要增加多一個產品,只要擴充套件一個工廠類就可以了。 3、隱蔽產品的具體實現,呼叫者只要關係產品的介面。 程

設計模式禪學習筆記02--工廠方法模式

1.工廠方法模式:      定義一個用於建立物件的介面,讓子類決定例項化哪一個類,工廠方法使一個類的例項化延遲到其子類     類圖:                                         根據定義可知:     這個模式有四個角色 :產

工廠模式工廠方法模式,抽象工廠模式 Java

工廠模式分為3類: * 簡單工廠模式 Simple Factory * 工廠方法模式 Factory Method * 抽象工廠模式 Abstract Factory thinking in Java 中工廠方法模式的例子: interface Ser

對 橋接模式 的個人理解,以及與 工廠方法模式、建造者模式 的結合運用

學習了一段時間設計模式,就想分享一下自己的理解, 歡迎大家多多指點,指出不足之處哈 橋接模式:以商店與手機為例子來描述,先從簡單的依賴關係說起 public interface Phone { /** 充電 **/ void charge(); /** 解鎖 *

工廠方法模式-Factory Method Pattern 工廠三兄弟工廠方法模式:日誌記錄器的設計

簡單工廠模式雖然簡單,但存在一個很嚴重的問題。當系統中需要引入新產品時,由於靜態工廠方法通過所傳入引數的不同來建立不同的產品,這必定要修改工廠類的原始碼,將違背“開閉原則”,如何實現增加新產品而不影

設計模式總結Abstruct Factory Pattern抽象工廠模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Abstruct Factory Pattern(抽象工廠模式) 意圖 提供一個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。 適用性 •一個系統要獨立於它的產品的建立、組合和表示時。 •一

工廠方法模式-Factory Method Pattern 工廠三兄弟工廠方法模式:過載的工廠方法工廠方法的隱藏,工廠方法模式總結

5 過載的工廠方法        Sunny公司開發人員通過進一步分析,發現可以通過多種方式來初始化日誌記錄器,例如可以為各種日誌記錄器提供預設實現;還可以為資料庫日誌記錄器提供資料庫連線字串,為檔

設計模式六:工廠方法模式(Factory method Pattern)

image bsp turn stat ole ati ace 方法 系統擴展 工廠方法(Factory Method)模式就是定義一個創建對象的工廠接口,將實際創建工作推遲到子類當中。 核心工廠類不再負責具體產品的創建,僅提供了具體工廠子類必須實現的接口,這樣核

設計模式工廠方法模式(Factory Method Pattern)

2. 工廠方法模式(Factory Method Pattern) 目錄 工廠方法模式(Factory Method Pattern) 模式動機 模式定義 模式結構 時序圖 程式碼分析 模式分析 例項

程式碼設計模式工廠方法模式Factory Method

特點: 工廠方法是粒度很小的設計模式,因為模式的表現只是一個抽象的方法。提前定義用於建立物件的介面,讓子類決定例項化具體的某一個類,即在工廠和產品中間增加介面,工廠不再負責產品的建立,由介面針對不同條件返回具體的類例項,由具體類例項去實現。工廠方法模式是簡單工廠模式的衍生,

設計模式工廠方法模式Factory Method Pattern

/** * 工廠方法模式。 * @author Bright Lee */ public class FactoryMethodPattern { public static void main(String[] args) { Creator creator = null;

設計模式總結Iterator Pattern迭代器模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Iterator Pattern(迭代器模式) 意圖 提供一種方法順序訪問一個聚合物件中各個元素, 而又不需暴露該物件的內部表示。適用性 1. 訪問一個聚合物件的內容而無需暴露它的內部表示。 2. 支援對聚合

設計模式總結Proxy Pattern代理模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Proxy Pattern(代理模式) 意圖 為其他物件提供一種代理以控制對這個物件的訪問。適用性 在需要用比較通用和複雜的物件指標代替簡單的指標的時候,使用Proxy模式。下面是一些可以使用Proxy模式常

設計模式總結Visitor Pattern訪問者模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Visitor Pattern(訪問者模式) 意圖 表示一個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素的類的前提下定義作用於這些元素的新操作。適用性 * 一個物件結構包含很多類物件,它們有不同的

設計模式總結Adapter Pattern介面卡模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Adapter Pattern(介面卡模式) 意圖 將一個類的介面轉換成另外一個客戶希望的介面。Adapter 模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。 注:介面卡模式在詳細設計階段不需

工廠方法模式-Factory Method Pattern 工廠三兄弟工廠方法模式工廠方法模式概述

2 工廠方法模式概述        在簡單工廠模式中只提供一個工廠類,該工廠類處於對產品類進行例項化的中心位置,它需要知道每一個產品物件的建立細節,並決定何時例項化哪一個產品類。簡單工廠模式最大的

設計模式總結Facade Pattern外觀模式

目錄 建立型設計模式: 結構型設計模式: 行為型設計模式: Facade Pattern(外觀模式) 意圖 為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。適用性 * 當你要為一個複雜子系統提供一個簡單介