工厂模式其实就是简单模式的升级版本,
简单模式将界面与业务逻辑区分开,但是如果不停的增加计算器的运算方式,简单模式中的工厂Factory 中判断的业务逻辑会变非常复杂,这不符合封装的原则。
所以在此之上将Factory抽象了出来,代码如下:
class Cal{public: virtual double getResult() { return 0; } void setPara(double paraA,double paraB) { parameterA = paraA; parameterB = paraB; }protected: double parameterA; double parameterB;};class Plus:public Cal{public: Plus(){} double getResult() { return parameterA + parameterB; }};class Minus:public Cal{public: Minus(){} double getResult() { return parameterA - parameterB; }};class FactoryInterface{public: virtual Cal * createCal() = 0;};class AddFactory:public FactoryInterface{public: Cal *createCal() { return new Plus(); }};class MinusFactory:public FactoryInterface{public: Cal *createCal() { return new Minus(); }};void main(){ double paraA = 5,paraB=43,result = 0; FactoryInterface *factory = new AddFactory; Cal *cal = factory->createCal(); cal->setPara(paraA,paraB); result = cal->getResult(); cout<<