工厂模式
- 概述
- 简单工厂模式
- 介绍
- 示例
- 示例使用
- 运行结果
- 缺点
概述
工厂模式属于一种创建型设计模式。其可以分为简单工厂模式,工厂模式和抽象工厂模式。工厂模式分为上、中、下三篇,本篇主要介绍简单工厂模式。
简单工厂模式
介绍
简单工厂模式可以理解为一个工厂根据产品的种类生产多种不同的产品。简单工厂模式只有一个工厂类,工厂类中提供一个工厂函数,用于根据产品种类生产各种不同产品。
示例
下面给出一个示例,来加深理解简单工厂模式。
有一个工厂(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;
}
运行结果
缺点
当需要生产的产品的种类增加时,工厂类就需要修改,打破了程序设计原则中的封闭原则。