設計模式之工廠方法模式(c++)

工廠方法模式定義

定義一個用於創建對象的接口,讓子類決定實例化哪一個類。核心結構分別是抽象工廠以及具體工廠,抽象產品以及具體產品。

#include <iostream>

using namespace std;

//抽象產品
class IWine
{
public:
	virtual ~IWine(){}
	virtual void createWine() = 0;
};

//抽象工廠類
class IFactory
{
public:
	virtual ~IFactory(){}
	virtual IWine* createFactory() = 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 BeerFactory :public IFactory
{
public:
	IWine* createFactory()
	{
		return new Beer;
	}
};

//白酒工廠
class SpiritFactory :public IFactory
{
public:
	IWine* createFactory()
	{
		return new Spirit;
	}
};

//紅酒工廠
class RedWineFactory :public IFactory
{
public:
	IWine* createFactory()
	{
		return new RedWine;
	}
};

int main()	//客戶端
{
	IFactory *factory = nullptr;
	//factory = new BeerFactory;
	//factory = new RedWineFactory;
	factory = new SpiritFactory;
	if (factory)
	{
		factory->createFactory()->createWine();
		delete factory;
		factory = nullptr;
	}
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章