设计模式1-简单工厂设计模式-C++

推荐文章:https://design-patterns.readthedocs.io/zh_CN/latest/index.html

使用一个类管理根据传入参数返回不同子类。

客户端(main)想要得到一个什么样的结果,只需要向管理类传入不同参数即可。

#include <iostream>
	using namespace std;

	// 糖果
	class Sugar
	{
	public:
		virtual void showProduct() = 0;
	protected:
		Sugar() {}
	};

	// 花生糖
	class PeanutSugar :public Sugar
	{
	public:
		PeanutSugar() :Sugar() {}
		void showProduct() override { cout << "花生糖" << endl; }
	};

	// 牛奶糖
	class MilkSugar :public Sugar
	{
	public:
		MilkSugar() :Sugar() {}
		void showProduct() override { cout << "牛奶糖" << endl; }
	};

	class Company
	{
	public:
		enum SUGARNAME { MILK, PEANUT };
		Company() :m_sugar(NULL) {}
		~Company() { delete m_sugar; m_sugar = NULL; }
		
        Sugar* setSugarName(SUGARNAME name)
		{
			switch (name)
			{
			case MILK:
				return m_sugar = new MilkSugar();
				break;
			case PEANUT:
				return m_sugar = new PeanutSugar();
				break;
			default:
				return NULL;
			}
		}
	private:
		Sugar* m_sugar;
	};

	int main()
	{
		Company company;

		Sugar* sugar = company.setSugarName(Company::MILK); // 牛奶糖
		sugar->showProduct();
		sugar = company.setSugarName(Company::PEANUT); // 花生糖
		sugar->showProduct();
	}

猜你喜欢

转载自blog.csdn.net/u010196624/article/details/88571456