C++實現工廠模式
1 說在前面的話
工廠模式可能和單例模式應該是設計模式中最簡單的兩種模式了,所以在前面介紹完單例模式後,我們再來重點學習一下工廠模式。
工廠模式屬於建立型模式,可以分為三類:簡單工廠模式、工廠方法模式、抽象工廠模式。它們的區別主要在建立工廠的複雜程度以及產品的複雜程度上。
2 三種模式區別
2.1 簡單工廠模式
一個抽象產品類,可以派生出多個具體產品類;
一個工廠類,工廠類可以建立多個具體產品類的例項。
2.2 工廠方法模式
一個抽象產品類,可以派生出多個具體產品類;
一個抽象工廠類,可以派生出多個具體工廠類;
每個具體工廠類只能建立一個具體產品類的例項。
2.3 抽象工廠模式
多個抽象產品類,每個抽象產品類可以派生出多個具體產品類;
一個抽象工廠類,可以派生出多個具體工廠類;
每個具體工廠類可以建立多個具體產品類的例項。
區別:
Ⅰ 簡單工廠和模式工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。
Ⅱ 簡單工廠模式只有一個工程類,對應多個產品;而工廠方法模式的具體工廠類只能建立一個具體產品類的例項,但有多個工廠;而抽象工廠模式可以建立多個工廠,同時一個工程可以建立多個產品類。
3 簡單工廠模式
簡單工廠就是一個工廠就管理建立多個產品,你想要什麼產品給這個工廠發對應訊息,它就給你生成對應的產品。我們看下面的程式,下面程式構建了一個商品抽象類,然後對應多個具體商品類,然後建立了一個工廠用來例項化需求的商品。
#include<iostream>
using namespace std;
enum SINGNAL { APPLE, ORANGE, BANANA };
/*一個抽象產品類*/
class Goods
{
public:
virtual void show() = 0;
};
/*繼承自抽象產品類的第一個具體商品類*/
class Apple :public Goods
{
public:
void show()
{
cout << "This is apple" << endl;
}
};
/*繼承自抽象產品類的第二個具體商品類*/
class Orange :public Goods
{
public:
void show()
{
cout << "This is orange" << endl;
}
};
/*繼承自抽象產品類的第三個具體商品類*/
class Banana :public Goods
{
public:
void show()
{
cout << "This is banana" << endl;
}
};
/*工廠類,用來建立對應商品*/
class Factory
{
public:
Goods* SwitchGoods(enum SINGNAL& choose)
{
if (choose == APPLE)
{
return new Apple();
}
else if (choose == ORANGE)
{
return new Orange();
}
else if (choose == BANANA)
{
return new Banana();
}
}
};
int main()
{
// 建立哪種商品的指示
enum SINGNAL singnal = APPLE;
// 例項化一個工廠
Factory factory;
// 委託工廠生產某一件產品
Goods* goods = factory.SwitchGoods(singnal);
goods->show(); // 輸出結果是:This is apple
return 0;
}
相關文章
- Java實現工廠模式Java模式
- Python 實現工廠模式、抽象工廠,單例模式Python模式抽象單例
- php實現抽象工廠模式PHP抽象模式
- C++ - 簡單工廠模式C++模式
- 我所理解的設計模式(C++實現)——抽象工廠模式(Abstract Factory Pattern)設計模式C++抽象
- 我所理解的設計模式(C++實現)——工廠方法模式(Factory Method Pattern)設計模式C++
- Go 實現常用設計模式(六)工廠模式Go設計模式
- 用Python實現設計模式——工廠模式Python設計模式
- C++設計模式建立型工廠模式C++設計模式
- 我所理解的設計模式(C++實現)——簡單工廠模式(Simple Factory Pattern)設計模式C++
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 簡單工廠模式—>工廠模式模式
- AspectJ實現設計模式(三)——工廠方法模式 (轉)設計模式
- 設計模式-C#實現簡單工廠模式設計模式C#
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 工廠模式之簡單工廠模式模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式-工廠模式二(工廠方法模式)設計模式
- Python實現工廠模式的兩個例子Python模式
- 簡單工廠模式和抽象工廠模式模式抽象
- 工廠模式(簡單工廠模式)快速理解模式
- 建立型:工廠模式-工廠方法、抽象工廠模式抽象
- 設計模式之工廠方法模式|抽象工廠模式設計模式抽象
- 工廠模式模式
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?模式抽象
- 簡單工廠和工廠模式模式
- 抽象工廠模式-與-工廠方法模式區別抽象模式
- 簡單工廠、工廠方法和抽象工廠模式抽象模式
- 簡單工廠模式(simple factory)及程式碼實現模式
- 1、簡單工廠模式實現計算器功能模式
- 【Java】簡單工廠模式、工廠模式、介面卡模式Java模式
- 設計模式學習(二)工廠模式——抽象工廠模式設計模式抽象
- 工廠模式 抽象模式模式抽象
- JavaScript設計模式與實踐–工廠模式JavaScript設計模式
- JavaScript設計模式與實踐--工廠模式JavaScript設計模式
- 工廠方法模式與抽象工廠模式的區別模式抽象