c++之简单工厂模式
发布日期:2021-09-25 21:40:47 浏览次数:0 分类:技术文章

目录


简单工厂模式定义

它又被叫做静态工厂方法模式,是由一个工厂对象去决定创建出哪一种产品类的实例,

在工厂模式家族中,是最简单但是很实用的模式,

优缺点

优点:根据客户的需要,去动态实例化相关的类,去除了客户对具体产品的依赖。

缺点:每次增加新的功能,就需要去修改现有工厂代码,违反了“开闭原则”。

代码实现

首先需要提供一个抽象产品类,和具体产品的实现类。并需要一个生产的工厂类。

以下以生产酒为场景,介绍简单工厂模式的代码实现。

#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;}
上一篇:c++之代理模式
下一篇:std::map容器