设计模式总篇-简单工厂模式

#define _CRT_SECURE_NO_WARNINGS
/*
@简单工厂模式
@作用
 主要用于创建对象,添加新类时不会影响之前的代码
 根据不同的条件产生不同的类,然后根据不同类的虚函数得到不同的结果
@优点
 适用于不同的类创建不同的类时
@缺点
 客户端必须知道基类和工厂类
*/

#include<iostream>
using namespace std;
//基类
class COperation
{
public:
	double m_dFirst;
	double m_dSecond;
public:
	virtual double GetResult()
	{
		double dResult = 0;
		return dResult;
	}
};

//加法
class  AddOperation : public COperation
{
public:
	virtual double GetResult()
	{
		return m_dFirst+m_dSecond;
	}
};

//减法
class SubOperation : public COperation
{
public:
	virtual double GetResult()
	{
		return m_dFirst-m_dSecond;
	}
};

//工厂类
class CCalculatorFactory
{
private:
	//COperation *_oper = nullptr;
public:
	static COperation* Create(char cOper)
	{
		COperation *_oper = nullptr;
		switch (cOper)
		{
		case '+':
			_oper = new AddOperation();
			break;
		case'-':
			_oper = new SubOperation();
			break;
		default:
			break;
		}
		return _oper;
	}

	static void Release(COperation *oper)
	{
		if (oper != nullptr)
		{
			delete oper;
		}
	}

};

int main(int argc, char **argv)
{
	int a, b;
	cin >> a >> b;

	COperation *op = CCalculatorFactory::Create('+');
	op->m_dFirst = a;
	op->m_dSecond = b;

	cout << op->GetResult() << endl;

	CCalculatorFactory::Release(op);

}
发布了141 篇原创文章 · 获赞 1 · 访问量 5328

猜你喜欢

转载自blog.csdn.net/wjl18270365476/article/details/104408630