简单工厂模式:
简单工厂模式非常好理解,很多开发同行甚至在没接触过设计模式就已经使用过这种模式。
简单模式就是将将产品抽象,在一个工厂去判断不同产品的生产(实例化)
#include <iostream>
#include <string>
#include <time.h>
#include <math.h>
using namespace std;
//抽象运算类
class Operation
{
private:
double _numberA;
double _numberB;
public:
double NumberA(){return _numberA;}
double NumberB(){return _numberB;}
void SetNumberA(double value){_numberA=value;}
void SetNumberB(double value){_numberB=value;}
virtual double GetResult()=0;
};
//加法运算的实现
class OperationAdd:public Operation
{
virtual double GetResult()
{
double result;
result=NumberA()+NumberB();
return result;
}
};
//减法运算的实现
class OperationSub:public Operation
{
virtual double GetResult()
{
double result;
result=NumberA()-NumberB();
return result;
}
};
//乘法运算的实现
class OperationMul:public Operation
{
virtual double GetResult()
{
double result;
result=NumberA()*NumberB();
return result;
}
};
//除法运算的实现
class OperationDiv:public Operation
{
virtual double GetResult()
{
double result;
if(fabs(NumberB())>0.000001)
result=NumberA()/NumberB();
else
result=0;
return result;
}
};
//简单工厂类在工厂中对产品进行分类(直接在工程类中通过判断创建实例对象)
class OperationFactory
{
private:
Operation* opr;
public:
static Operation* createOperate(string oprate)
{
Operation *opr=NULL;
if(oprate=="+")opr=new OperationAdd;
else if(oprate=="-")opr=new OperationSub;
else if(oprate=="*")opr=new OperationMul;
else if(oprate=="/")opr=new OperationDiv;
return opr;
}
};
int main()
{
Operation* opr;
OperationFactory opfac;
opr=opfac.createOperate("+");
opr->SetNumberA(12);
opr->SetNumberB(3);
double result=opr->GetResult();
delete opr;
retern 0;
}