工廠模式
- 概述
- 簡單工廠模式
- 介紹
- 示例
- 示例使用
- 運行結果
- 缺點
概述
工廠模式屬于一種創建型設計模式。其可以分為簡單工廠模式,工廠模式和抽象工廠模式。工廠模式分為上、中、下三篇,本篇主要介紹簡單工廠模式。
簡單工廠模式
介紹
簡單工廠模式可以理解為一個工廠根據產品的種類生產多種不同的產品。簡單工廠模式只有一個工廠類,工廠類中提供一個工廠函數,用于根據產品種類生產各種不同產品。
示例
下面給出一個示例,來加深理解簡單工廠模式。
有一個工廠(Factory)生產塑料筆筒(PlasticPenHolder)和鐵制筆筒(IronPenHolder)。
enum MyPenHolder
{plasticHolder,//塑料筆筒ironHolder//鐵制筆筒
};class PenHolder
{
public:virtual void introduce() = 0;
};class PlasticPenHolder :public PenHolder
{
public:void introduce()override {cout << "I am PlasticPenHolder!" << endl;}
};class IronPenHolder :public PenHolder
{
public:void introduce()override {cout << "I am IronPenHolder!" << endl;}
};class Factory
{
public:PenHolder* createPenHolder(enum MyPenHolder &type) {if (type == plasticHolder){return new PlasticPenHolder;}else if (type == ironHolder){return new IronPenHolder;}else {return nullptr;}}
};
示例使用
int main()
{MyPenHolder type = MyPenHolder::plasticHolder;MyPenHolder type1 = MyPenHolder::ironHolder;Factory *factory = new Factory;PenHolder *holder = factory->createPenHolder(type);PenHolder *holder1 = factory->createPenHolder(type1);holder->introduce();holder1->introduce();delete holder;delete holder1;delete factory;return 0;
}
運行結果
缺點
當需要生產的產品的種類增加時,工廠類就需要修改,打破了程序設計原則中的封閉原則。