工厂模式其实就是简单模式的升级版本,
简单模式将界面与业务逻辑区分开,但是如果不停的增加计算器的运算方式,简单模式中的工厂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<<result<<endl;
}