业务逻辑.h
#pragma once
class Operation
{
protected:
double numberA;
double numberB;
double result;
public:
void setValue(double numberA, double numberB)
{
this->numberA = numberA;
this->numberB = numberB;
}
virtual double getValue() = 0;
};
class OperationAdd :public Operation
{
public:
double getValue()
{
result = numberA + numberB;
return result;
}
};
class OperationSub :public Operation
{
public:
double getValue()
{
result = numberA - numberB;
return result;
}
};
工厂.h
#pragma once
#include "业务逻辑.h"
class OperationFactory
{
public:
virtual Operation* CreateOperation() = 0;
};
class AddFactory:public OperationFactory
{
public:
Operation* CreateOperation()
{
return new OperationAdd;
}
};
class SubFactory:public OperationFactory
{
public:
Operation* CreateOperation()
{
return new OperationSub;
}
};
界面逻辑.h
#include <iostream>
using namespace std;
#include "工厂.h"
int main()
{
double numberA;
double numberB;
char operate;
cout << "请输入a+b的式子:" << endl;
cin >> numberA >> operate >> numberB;
Operation *oper
OperationFactory *opr;
switch (operate)
{
case '+':
opr = new AddFactory;
break;
case '-':
opr = new SubFactory;
break;
}
oper = opr->CreateOperation();
oper->setValue(numberA, numberB);
cout << "结果为" << oper->getValue() << endl;
system("pause");
return 0;
}
转载于:https://blog.51cto.com/sophoso/1565683