意圖:
工廠方法模式
(factory method pattern)
:工廠方法模式又稱為
工廠模式
,也叫虛擬構造器
(virtual
constructor)
模式或者
多型模式
,屬於類的建立型模式。在工廠方法模式中,父類負責定義建立物件
的公共介面,而子類則負責生成具體的物件,這樣做的目的是將類的例項化操作延遲到子類中完成,
即由子類來決定究竟應該例項化(建立)哪乙個類。
uml圖:
角色:
抽象工廠角色:與應用程式無關,任何在模式中建立物件的工廠必須實現這個介面。
具體工廠角色:實現了抽象工廠介面的具體類,含有與引用密切相關的邏輯,並且受到應用程式的呼叫以建立產品物件。
抽象產品角色:工廠方法所建立產品物件的超型別,也就是產品物件的共同父類或共同擁有的介面。
具體產品角色:這個角色實現了抽象產品角色所聲名的介面。工廠方法所建立的每個具體產品物件都是某個具體產品角色的例項。
優缺點:
優點:
1、基於工廠角色和產品角色的
多型性設計
是工廠方法模式的關鍵。它能
夠使工廠可以自主確定建立何種產品物件,而如何建立這個物件的細
節則完全封裝在具體工廠內部。
2、使用工廠方法模式的另乙個優點是在系統中加入新產品時,無需修改
抽象工廠和抽象產品提供的介面,無需修改客戶端,也無需修改其它
的具體工廠和具體產品,而只要新增乙個新的具體工廠和具體產品即
可。(符合
開閉原則
)
缺點:
1、在新增新產品時,需要編寫新的具體產品類,而且還要提供與之對應
的具體工廠類,類成對增加,將導致系統設計較為龐大,且執行時繫
統會有額外的開銷。
使用範圍:
1、不能清楚知道所必須建立的物件的類。
2、乙個類希望由它的子類來指定它所建立的物件。
3、將建立物件的職責委託給多個子類中的某乙個,且不同子類提供不同
實現。
設計模式之工廠方法(Factory Method)
在軟體開發過程中,有很多人抱怨著需求的變化,是需求沒有做好麼?不是的,其實需求變化在軟體開發中是不可避免的。做人也是一樣,出了問題要先從自己這邊找原因,然後想辦法解決。我們身為程式設計師,向使用者和需求分析師們抱怨 其實,任何一種抱怨都是沒有意義的 是沒有意義的。究竟怎樣解決這個問題呢?我身邊很多人...
學習筆記 設計模式之Factory Method
目的分類 物件建立型模式 範圍準則 類 該模式處理類和子類之間的關係,這些關係通過繼承建立,是靜態的,在編譯時刻便確定下來了 主要功能 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使乙個類的例項化延遲到其子類 適用情況 當乙個類不知道它所必須建立的物件的類的時候...
簡單工廠模式,工廠模式,抽象工廠模式
三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...