目录
简单工厂模式定义
它又被叫做静态工厂方法模式,是由一个工厂对象去决定创建出哪一种产品类的实例,
在工厂模式家族中,是最简单但是很实用的模式,
优缺点
优点:根据客户的需要,去动态实例化相关的类,去除了客户对具体产品的依赖。
缺点:每次增加新的功能,就需要去修改现有工厂代码,违反了“开闭原则”。
代码实现
首先需要提供一个抽象产品类,和具体产品的实现类。并需要一个生产的工厂类。
以下以生产酒为场景,介绍简单工厂模式的代码实现。
#include <iostream>
using namespace std;
//酒的抽象接口
class IWine
{
public:
virtual ~IWine(){}
virtual void createWine() = 0;
};
//啤酒
class Beer :public IWine
{
public:
void createWine()
{
cout << "生产啤酒" << endl;
}
};
//白酒
class Spirit :public IWine
{
public:
void createWine()
{
cout << "生产白酒" << endl;
}
};
//红酒
class RedWine :public IWine
{
public:
void createWine()
{
cout << "生产红酒" << endl;
}
};
//酒工厂 简单工厂模式
class ProducWineFactory
{
public:
ProducWineFactory(){}
~ProducWineFactory()
{
if (wine)
{
delete wine;
wine = nullptr;
}
}
IWine * createWine(char type)
{
switch (type)
{
case 'B': //啤酒
{
wine = new Beer;
}
break;
case 'S': //白酒
{
wine = new Spirit;
}
break;
case 'R': //红酒
{
wine = new RedWine;
}
break;
default:
break;
}
return wine;
}
private:
IWine *wine = nullptr;
};
int main() //客户端
{
ProducWineFactory wineFactoty;
IWine *pwine = wineFactoty.createWine('R');
if (pwine)
{
pwine->createWine();
}
return 0;
}