c 設計模式之工廠模式

2022-03-28 02:17:38 字數 2705 閱讀 5863

1:簡單工廠模式

簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法(static factory method)模式,簡單工廠模式是由乙個工廠物件決定建立出來哪一種產品類的例項.

簡單工廠模式的實質是由乙個工廠類根據傳入的引數,動態決定應該建立哪一類產品類(這些產品類繼承自乙個父類或介面)的例項。打個比方

假設有乙個工廠,他能生產出a、b兩種產品。當客戶需要產品的時候一定要告訴共產是哪種產品,是a還是b。當新增加一種新產品的時候,那麼就要去修改工廠的類。 

1

: 定義控制台應用程式的入口點。2//

34 #include "

stdafx.h

"5 #include6

7using

namespace

std;89

class

product10;

1415

class product_a : public

product

1622

};23

24class product_b : public

product

2531

};32

33class

factory

3449}50

};51

52int

main()

53

二:工廠方法模式:

上面的簡單工廠模式的缺點是當新增產品的時候就要去修改工廠的類,這就違反了開放封閉原則,(類、模組、函式)可以擴充套件,但是不可以修改,於是,就出現了工廠方法模式。所謂工廠方法模式,是指定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。打個比方

現在有a、b兩種產品,那麼久開兩個工廠。工廠a負責生產a產品,工廠b負責生產b種產品。這時候客戶不需要告訴共產生產哪種產品了,只需要告訴共產生產就可以了。

1 #include "

stdafx.h

"2 #include3

4using

namespace

std;56

class

product7;

1112

class product_a : public

product

1319

};20

21class product_b : public

product

2228

};29

30class

factory31;

3536

class factory_a : public

factory

3743

};44

45class factory_b : public

factory

4652

};53

54int

main()

55

抽象工廠模式

為什麼要有抽象工廠模式,假如我們a產品中有a1和a2兩種型號的廠品,b產品中有b1和b2兩種型號的廠品,那怎麼辦,上面兩種工廠模式就不能解決了。這個時候抽象工廠模式就登場了。還是開設兩家工廠,工廠a負責生產a1 、a2型號產品,b工廠負責生產b1、b2型號的產品。

提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。  適用性:乙個系統要獨立於它的產品的建立、組合和表示時。乙個系統要由多個產品系列中的乙個來配置時。當你要強調一系列相關的產品物件的設計以便進行聯合使用時。當你提供乙個產品類庫,而只想顯示它們的介面而不是實現時。

1 #include 2

using

namespace

std; 34

//定義抽象類

5class

product1

6;

1011

//定義具體類

12class product_a1 :public

product1

13

16};

1718

class product_b1 :public

product1

19

22};

2324

//定義抽象類

25class

product2

26;

3031

//定義具體類

32class product_a2 :public

product2

33

36};

3738

class product_b2 :public

product2

39

42};

4344

45class

factory

46;

5152

class

factorya

53

56 product2 *creat2()

57};

5859

class

factoryb

60

63 product2 *creat2()

64};

6566

intmain()

67

c 設計模式 之 工廠模式之 工廠模式

1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...

c 設計模式之 工廠模式

使用工廠的客戶根本不知道具體的類.工廠的使用者建立乙個基類的物件.但由子類決定例項化哪個.這就允許我們服從子類的例項化,但是呼叫都不知道哪個物件被建立.來自源 wiki include class button class osxbutton public button class windowsb...

設計模式之 工廠模式 C

主要介紹抽象工廠模式,以及工廠方法和抽象工廠之間的區別 抽象工廠允許客戶使用抽象的介面來建立一組相關的產品,而無需知道實際產出的具體產品是什麼。這樣,客戶就從具體的產品中解耦出來。抽象工廠類圖如下所示 2 抽象工廠vs工廠方法 抽象工廠 提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具...