設計模式之簡單工廠模式(c++實現)

目錄

簡單工廠模式定義

優缺點

代碼實現


簡單工廠模式定義

它又被叫做靜態工廠方法模式,是由一個工廠對象去決定創建出哪一種產品類的實例,

在工廠模式家族中,是最簡單但是很實用的模式,

優缺點

優點:根據客戶的需要,去動態實例化相關的類,去除了客戶對具體產品的依賴。

缺點:每次增加新的功能,就需要去修改現有工廠代碼,違反了“開閉原則”。

代碼實現

首先需要提供一個抽象產品類,和具體產品的實現類。並需要一個生產的工廠類。

以下以生產酒爲場景,介紹簡單工廠模式的代碼實現。

#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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章