意圖:
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使乙個類的例項化延遲到其子類。這樣,核心工廠類不再負責產品的建立,僅負責為具體工廠類提供必須實現的介面,這樣的好處是可以使系統在不修改工廠角色情況下引入新的產品(新增乙個具體工廠類即可)
解決的問題:
應用類不能**那個實例子類被例項化,僅知道乙個新的物件何時應被建立。該模式把處理延遲到子類,由子類決定例項化哪個類。
適用性:
當乙個類不清楚它所必須建立的物件的類的時候
乙個類希望由它的子類來指定它所建立的物件的時候。
uml描述:
p.s :右邊第乙個note表示createproduct的實現
實現相關:
1) 使用具體工廠(抽象工廠可作為抽象類,也可能定義預設方法)
2) 可以使用引數化工廠方法來使得工廠方法可以建立多種產品。工廠方法採用乙個標識來指定要被建立的物件種類的引數(如列舉型別的引數)。可以直接由creator建立產品,若需要擴充的話再生成子類(覆蓋產品的建立方法,增加需要的產品,而把預設的處理交給基類),如
typedef enum productid productid;
productor * create::creator (productid id)
設計模式之工廠方法(Factory Method)
在軟體開發過程中,有很多人抱怨著需求的變化,是需求沒有做好麼?不是的,其實需求變化在軟體開發中是不可避免的。做人也是一樣,出了問題要先從自己這邊找原因,然後想辦法解決。我們身為程式設計師,向使用者和需求分析師們抱怨 其實,任何一種抱怨都是沒有意義的 是沒有意義的。究竟怎樣解決這個問題呢?我身邊很多人...
簡單工廠方法,工廠方法,抽象工廠方法
以大話設計模式計算器為例 簡單工廠方法是由具體執行功能類,工廠類,客戶端構成,工廠類有case語句,負責建立不同的類,客戶端呼叫工廠類裡面的工廠方法,工廠類的工廠方法根據客戶端傳進去的引數new相應的類的物件返回給客戶端,客戶端得到返回的物件用該物件初始化該物件的成員變數最後呼叫該物件的方法執行計算...
工廠方法模式 工廠方法模式
工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...