工厂模式

简单工厂模式,是一种实例化对象的方式,只要输入需要实例化对象的名字,就可以通过工厂对象的相应工厂函数来制造你需要的对象。

简单工厂模式的核心是,对于一个父类的多个继承子类,工厂对象的工厂函数根据用户输入,

class Operation
{
private:
double m_a,m_b;
public:
void setA(double a){m_a=a;}
double getA(){return m_a;}
double getB(){return m_b;}
void setB(double b){m_b=b;}
double virtual getresult(){return 0;}
operatoion():m_a(0),m_b(0){}
};

class Add: pulic operation
{
public:
doble getresult()
{
return getB()+getA();
}
}

class Mul: pulic operation
{
public:
doble getresult()
{
return getB()-getA();
}
}
class Div: pulic operation
{
public:
doble getresult()
{
return getB()*getA();
}
}
class Sub: pulic operation
{
public:
doble getresult()
{
return getB()/getA();
}
}
class SimpleFactor
{

public:
static Opertion* CreateOperator(char ch)
{
Operation *p;
switch(ch)
{
case '+':
p=new Add();
break;
case '-':
p=new Sub();
break;
case '*':
p=new Mul();
break;
case '\':
p=new Div();
break;
}
return p;

}
};

int main()
{

double A=0;
double B=0;
char ch='\0';
cin>>A>>ch>>B;
//share_ptr可以看做一个模板类,创建一个op对象用Operation对象来初始化
tr1::shared_ptr<Operation> op(SimpleFactory::CreateOperator(ch));
op->set(A);
op->set(B);

cout<<op->getresult()<<endl;
}

posted @ 2019-06-06 07:25  countryboy666  阅读(107)  评论(0编辑  收藏  举报