📄 更改3_面向对象_工厂模式.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 OperationFactory
{
public:
static Operation* createOperate(char);
};
Operation* OperationFactory::createOperate(char operate)
{
Operation *oper = NULL;
switch(operate)
{
case '+':
oper = new OperationAdd;
break;
case '-':
oper = new OperationSub;
break;
case '*':
oper = new OperationMul;
break;
case '/':
oper = new OperationDiv;
break;
}
return oper;
}
// 客户端
int main()
{
int nA;
int nB;
char cOper;
cout << "请输入数A:";
cin >> nA;
cout << "请输入数B:";
cin >> nB;
cout << "请输入操作符:";
cin >> cOper;
Operation *oper;
oper = OperationFactory::createOperate(cOper);
oper->setNumberA(nA);
oper->setNumberB(nB);
double result = oper->getResult();
cout << "结果是: " << result << endl;
delete oper;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -