工廠方法模式

2021-10-08 15:21:44 字數 857 閱讀 7108

****** factory模式根據提供給它的資料,返回幾個可能類中的乙個類的例項。通常它返回的類都有乙個公共的父類和公共的方法。

優點:工廠類中包含了必要的邏輯判斷,去除了客戶端與具體產品的依賴。

缺點:在某種程度上違背了開放一封閉原則。對工廠類過於依賴。

工廠方法(factory method)模式的用意是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類中。

在工廠方法模式中,核心的工廠類不再負責所有產品的建立,而是將具體建立工作交給子類去做。這使得工廠方法模式可以允許系統在不修改工廠角色的情況下引進新產品。

在factory method模式中,工廠類與產品類往往具有平行的等級結構,它們之間一一對應。

抽象工廠(creator)角色:是工廠方法模式的核心,與應用程式無關。

具體工廠(concrete creator)角色:實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯。

抽象產品(product)角色:產品物件的共同父類或共同擁有的介面。

具體產品(concrete product)角色:實現了抽象產品角色所定義的介面。

工廠方法模式與簡單工廠模式

工廠方法類的核心是乙個抽象工廠類,而簡單工廠模式把核心放在乙個具體類上。

工廠方法模式有乙個別名叫多型性工廠模式。

優點:較好的符合了「開放一封閉」原則。

缺點:工廠方法是要建立產品物件的,也就是需要選擇具體的產品物件,並建立他們的例項。因此具體產品物件與工廠方法是耦合的。

何時選用工廠方法模式

工廠方法模式很好的體現了「依賴倒置原則」。

本質:延遲到子類來選擇實現。

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...

工廠方法模式(一) 簡單工廠方法模式

ps 第二篇學習部落格,堅持就是勝利。繼續設計模式的學習,記錄工廠模式,加深自己的理解。基本結構 abstractproduct 用來定義基本的商品的抽象 public abstract class abstractphoneproduct 用來實現抽象商品,生成各種商品 public class ...