#include <iostream> #include <cstdlib>using namespace Std;class operation{protected:double numbera;double Numberb;public:double Geta () {return numbera;} Double Getb () {return numberb;} void SetA (double number) {Numbera = number;} void Setb (double number) {numberb = number;} Virtual Double GetResult () {Double result = 0;return result;}}; Class Operationadd:p ublic operation{public:double getresult () {double result = 0;result = Numbera + numberb;return result; }};class operationsub:p ublic operation{public:double getresult () {double result = 0;result = Numbera-numberb;return ResU lt;}}; Class Operationmul:p ublic operation{public:double getresult () {double result = 0;result = Numbera * Numberb;return result; }};class operationdiv:p ublic operation{public:double getresult () {double result = 0;result = Numbera/numberb;return ResU lt;}}; Class operationfactory{public:operation* CreateOperation (char type) {operation *oper;switch (type) {case ' + ': oper = new Operationadd;break;case '-': oper = new OpeRationsub;break;case ' * ': oper = new operationmul;break;case '/': oper = new Operationdiv;break;} return oper;}; int main () {operation* oper = null;operationfactory of;double a;double b;char op;cout << "Input A:"; Cin >> A;co UT << "input B:"; Cin >> b;cout << "Input oper:"; cin >> Op;oper = of.createoperation (OP); oper->s EtA (A); Oper->setb (B); cout << Oper->getresult () << endl;if (oper! = null) {Delete oper;oper = null;} return 0;}
Big talk design pattern C + + implementation one: Simple Factory mode