second60 20180425
在我理解,抽象工廠其實是工廠模式的公升級版,不同之處是:工廠模式是對一類物件的建立,而抽象工廠是對多類物件的建立。
工廠模版只是處理一類物件建立
抽象工廠能對多類物件的建立
圖中可以看出,相比公升級版權的工廠模式,此模式多了,不同的抽象產品,工廠即可以建立abstartproducta類的產品,也可以建立
abstarctproductb
類的產品。
某個交通工具生產廠商,即可以生產電單車,也可以生產汽車。車有分低中高階區別。電單車有低端a摩托,中端b摩托
.汽車有低端
a汽車,中端b汽車
.低商廠品由廠商
a提供,中端車由廠商
b提供。
分析:a) 這裡分兩個型別的產品,分別為:moto, car兩個抽象類,
moto
有motoa(
低端),motob
(中端),
car有
cara(
低端),
carb
(中端)
b) 工廠分低中高階別,低端車由低端廠生產factorya,中端車由中端廠生產
factoryb
,高階車由高階廠生產
factoryc
。類彙總:
1. 工廠抽象類:ca***ctory
2. 工廠實現類:ca***ctorya(低端
),ca***ctoryb(
中端),ca***ctoryc(
高階),
3. 汽車抽象類:car
4. 汽車實現類:cara, carb
5. 摩托抽象類:moto
6. 摩托實現類:motoa, motob
根據抽象工廠模式,**如下:
// 汽車抽象類
class car;
//汽車實現類
class cara:public car{};
class carb:public car{};
class carc:public car{}; // 新加高階車
// 摩托抽象類
class moto;
//摩托現實類
class motoa:public moto{};
class motob:public moto{};
class motoc:public moto{};
// 新加高階車
//工廠抽象類
class ca***ctory;
moto* createmoto()
car* createcar()
// 中端工廠
class ca***ctoryb;
moto* createmoto()
car* createcar()
// 高階工廠
class ca***ctoryc;
moto* createmoto()
car* createcar()
};a) 支援多類產品:抽象工廠可以支援多個不同產品的建立,如上面:汽車,摩托兩類
b) 擴充套件性好:如交通公司本來只生產低中端汽車和摩托,業務擴大後,生產高階汽車,只需新增高階工廠和高階車即可
再者,交通公司除了生產摩托和汽車外,又生產火車,飛機等,在抽象工廠類新增新交通公司,並在具體工廠生產,即可支援新型別產品。
c) 抽象工廠模式擁工廠模式的優點
抽象工廠其實是工廠方法的公升級版,區別是:工廠方法只處理一類產品,而抽象工廠可以處理多類產品。
工廠模式和抽象工廠都是很常用的建立設計模式,相同也包括了最基本的面象物件設計思想,把一類產品抽象化,然後通過繼續來實現具體類,最後利用多型來實現不同產品的生產。
下一節,單例,為最最最常用的設計模式,值得關注。
設計模式C 描述 抽象工廠模式
閱讀此文應先閱讀簡單工廠模式與工廠方法模式抽象工廠模式是物件的建立模式,它是工廠方法模式的進一步推廣。假設乙個子系統需要一些產品物件,而這些產品又屬於乙個以上的產品等級結構。那麼為了將消費這些產品物件的責任和建立這些產品物件的責任分開,可以引進抽象工廠模式。這樣的話,消費產品的客戶不需要直接參與產品...
設計模式C 描述 抽象工廠模式
設計模式c 描述 抽象工廠模式 閱讀此文應先閱讀簡單工廠模式與工廠方法模式 抽象工廠模式是物件的建立模式,它是工廠方法模式的進一步推廣。假設乙個子系統需要一些產品物件,而這些產品又屬於乙個以上的產品等級結構。那麼為了將消費這些產品物件的責任和建立這些產品物件的責任分開,可以引進抽象工廠模式。這樣的話...
設計模式C 描述 抽象工廠模式
設計模式c 描述 抽象工廠模式 閱讀此文應先閱讀簡單工廠模式與工廠方法模式 抽象工廠模式是物件的建立模式,它是工廠方法模式的進一步推廣。假設乙個子系統需要一些產品物件,而這些產品又屬於乙個以上的產品等級結構。那麼為了將消費這些產品物件的責任和建立這些產品物件的責任分開,可以引進抽象工廠模式。這樣的話...