關於工廠方法模式與抽象工廠模式的討論

2021-09-29 11:42:15 字數 682 閱讀 6445

將工廠層次類的超類設計為乙個抽象類,並且在該類中包含乙個靜態方法getbuildingfactory(type:string)。由客戶類直接呼叫該方法,並且傳入乙個引數值。根據該引數,由工廠超類決定建立乙個具體的工廠子類物件,並且返回給客戶類。之後客戶類利用該工廠子類物件產生產品子類的物件。如果產品類的物件的建立需要動態的由客戶類提供引數,則可以在工廠子類的構造方法的引數中傳入。這樣做的好處是,將建立工廠類物件的條件語句交給了工廠超類。而在客戶類中,不包含建立工廠子類物件的條件語句。在可擴充套件性方面,修改產品類的時候,不需要修改工廠類和客戶類;而需要增加乙個新的產品子類的時候,只需要響應的增加乙個工廠子類即可,對原有的產品類**和工廠類**沒有任何影響。當然,如果客戶程式需要使用新增加類的時候,需要修改工廠超類的getbuildingfactory(type:string)方法。

(1)如果需要增加producta3 和productb3,則工廠類階層類需要增加concretecreator3。在此情況下,抽象工廠模式符合開閉原則。

抽象工廠模式——符合開閉原則:

(2)如果要增加乙個新產品層次類productc,則必須在每個工廠實類中增加方法+getobjc。在此情況下,抽象工廠模式不符合開閉原則。

抽象工廠模式——不符合開閉原則:

工廠方法模式與抽象工廠模式

工廠方法 public inte ce product public inte ce creator public class concreteproduct1 implements product public class concreteproduct2 implements product p...

工廠方法模式與抽象工廠模式

這篇部落格主要記錄一下工廠方法模式和抽象工廠模式。工廠方法模式比較常見,且相對比較容易理解,因此直接介紹一下它的定義及設計結構。工廠方法模式定義了乙個建立物件的介面,但由子類決定例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。如圖所示,抽象的creator提供了乙個建立物件的介面factorym...

抽象工廠與工廠方法模式

1.如果乙個後花園只種蔬菜類,那麼就用簡單工廠就可以了.2.如果後花園蔬菜品種繁多.得用工廠方法才可以,把共有的東西抽象出來.3.如果要擴大後花園的規模,比如乙個在北方,乙個在南方,這樣工廠方法就無法實現了,就應當用抽象工廠,把各種各樣的植物,又組成乙個後花園.簡單工廠是乙個工廠只生產一類的產品,面...