📄 factory.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 + -