⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 factory.cpp

📁 设计模式:工厂模式、单例模式的基本实现
💻 CPP
字号:
#include <iostream>
using namespace std;

class Operation
{
protected:
	double _numberA;
	double _numberB;
	double _result;
public:
	void setNumberA(int numberA)
	{
		_numberA = numberA;	
	}
	void setNumberB(int numberB)
	{
		_numberB = numberB;	
	}
	virtual double getResult()=0;	
	
};

class OperationAdd: public Operation
{
public:
	double getResult()
	{
		_result = _numberA + _numberB;
		return _result;
	}
};






class OperationSub: public Operation
{
public:
	double getResult()
	{
		_result = _numberA - _numberB;
		return _result;
	}
};

class OperationMul: public Operation
{
public:
	double getResult()
	{
		_result = _numberA * _numberB;
		return _result;
	}
};

class OperationDiv: public Operation
{
public:
	double getResult()
	{
		if(_numberB == 0)
		{
			throw "除数不能为0.";
		}
		else
		{
			_result = _numberA / _numberB;
		}
		return _result;
	}
};

class Factory
{
public:
	virtual Operation* createOperation()=0;
};


class AddOperationFactory: public Factory
{
public:
	Operation* createOperation()
	{
		return new OperationAdd;
	}
};

class SubOperationFactory: public Factory
{
public:
	Operation* createOperation()
	{
		return new OperationSub;
	}
};

class MulOperationFactory: public Factory
{
public:
	Operation* createOperation()
	{
		return new OperationMul;
	}
};

class DivOperationFactory: public Factory
{
public:
	Operation* createOperation()
	{
		return new OperationDiv;
	}
};




int main()
{
	Factory *factory = new AddOperationFactory;

	Operation *oper = factory->createOperation();

	oper->setNumberA(10);
	oper->setNumberB(20);

	double result = oper->getResult();
	cout << "结果是: " << result << endl;

	delete oper;
	delete factory;

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -