設計模式系列 抽象工廠模式

2021-07-05 00:19:51 字數 929 閱讀 6997

如圖,factorya專心負責生產producta,factoryb專心負責生產productb,factorya和factoryb之間沒有關係;如果到了後期,如果需要生產productc時,我們則可以建立乙個factoryc工廠類,該類專心負責生產productc類產品。由於factorya、factoryb和factoryc之間沒有關係,當加入factoryc加入時,對factorya和factoryb的工作沒有產生任何影響,那麼對**進行測試時,只需要單獨對factoryc和productc進行單元測試,而factorya和factoryb則不用進行測試,則可省去大量無趣無味的測試工作。

適用場合

工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。

在設計的初期,就考慮到產品在後期會進行擴充套件的情況下,可以使用工廠方法模式;

產品結構較複雜的情況下,可以使用工廠方法模式;

由於使用設計模式是在詳細設計時,就需要進行定奪的,所以,需要權衡多方面的因素,而不能為了使用設計模式而使用設計模式

#include using namespace std;

class product

;class producta : public product

if (producta != null)

if (factoryb != null)

if (productb != null)

return 0;

}

設計模式系列 抽象工廠模式

抽象工廠模式為建立一組物件提供了一種解決方案。與工廠方法模式相比,抽象工廠模式中的具體工廠不只是建立一種產品,它負責建立一族產品。例如海爾電器工廠生產的海爾電視機 海爾電冰箱,海爾電器廠1生產電視機型別1和電冰箱型別1,海爾電器廠2生產電視機型別2和電冰箱型別2,這個時候就必須要用抽象工廠模式了,工...

設計模式系列 抽象工廠模式

公司最近專案不忙,午間小憩之後,小二找到c哥攀談了起來。c哥,忙啥呢?也沒忙啥,就是隨便看看。哦哦,我最近也不怎麼忙。你上次給我講的工廠模式,受益匪淺啊!哈哈,是嘛!其實你不知道,還有抽象工廠模式呢!抽象工廠模式?願聞其詳。好,反正最近也不忙,就給你講講吧。小二,你知道,奧迪a4與a6,他們使用的輪...

設計模式系列 抽象工廠模式

抽象工廠是基於簡單工廠發展而來的,通過抽象工廠,我們可以建立多種型別的工廠,並且依據具體業務需求而在具體工廠裡面進行任意拼裝組合。在現實世界中,汽車製作行業有各種各樣的工廠,每個工廠都需要具有生產輪胎 汽車引擎等部件的能力,但是針對具體的工廠,每個部件的生產又各不相同,所有在軟體開發過程中,當我們為...