#include <iostream> 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:public Operation { public: double GetResult() { double result=0; result=numberA+numberB; return result; } }; class OperationSub:public Operation { public: double GetResult() { double result=0; result=numberA-numberB; return result; } }; class OperationMul:public Operation { public: double GetResult() { double result=0; result=numberA*numberB; return result; } }; class OperationDiv:public Operation { public: double GetResult() { double result=0; if(numberB!=0) result=numberA/numberB; return result; } }; //工厂类,决定实例化那个产品; 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; oper=of.createOperation('+'); oper->setA(3); oper->setB(2); cout<<oper->GetResult()<<endl; if(oper!=NULL) { delete oper; oper=NULL; } system("pause"); return 0; }
运行结果:
原文:http://blog.csdn.net/gogokongyin/article/details/51924764