//父类
class Operation
{
protected:
double _numberA;
double _numberB;
public:
double getNumberA() {return _numberA;}
double getNumberB() {return _numberB;}
void setNumberA(const double a) {_numberA = a;}
void setNumberB(const double b) {_numberB = b;}
virtual double getResult() { double res = 0; return res;}
};
//加减乘除子类
class OperationAdd : public Operation
{
public:
virtual double getResult() {return _numberA + _numberB;}
};
class OperationSub : public Operation
{
public:
virtual double getResult() {return _numberA - _numberB;}
};
class OperationMul : public Operation
{
public:
virtual double getResult() {return _numberA * _numberB;}
};
class OperationDiv : public Operation
{
public:
virtual double getResult()
{
if (0 == _numberB) throw;
return _numberA / _numberB;
}
};
//工厂类
class OperationFactory
{
public:
static Operation* createOperate(char operate)
{
Operation *oper;
switch (operate)
{
case '+':
oper = new OperationAdd();
break;
case '-':
oper = new OperationSub();
break;
case '*':
oper = new OperationMul();
break;
case '/':
oper = new OperationDiv();
break;
default:
oper = nullptr;
break;
}
return oper;
}
};
//使用
int main() {
std::cout << "---begin---" << std::endl;
Operation *oper = OperationFactory::createOperate('+');
oper->setNumberA(1);
oper->setNumberB(2);
int res = oper->getResult();
std::cout << res << std::endl;
system("pause");
return 0;
}
一、简单工厂模式
最新推荐文章于 2024-09-09 12:31:15 发布