学习模式----工厂模式(2)

来源:互联网 发布:java构造图例子 编辑:程序博客网 时间:2024/06/08 10:40

  2.工厂模式,一些类封装在工厂里面,要调用的时候可以通过工厂对象获得封装在工厂里面的类,从而得到类的方法。工厂模式使得二次编程用户不需要了解工厂里面封装的类,通过统一接口创建出想要的类。

class MyBase{public:    MyBase();    virtual void add(int a,int b);    virtual void sub (int a,int b);};
MyBase::MyBase(){}void MyBase::add(int a,int b){}void MyBase::sub (int a,int b){}

class A : public MyBase{public:    A();    void add(int a,int b);};

A::A(){}void  A::add(int a, int b){    cout<<"a+b="<<a+b<<endl;}

class B : public MyBase{public:    B();    void sub(int a,int b);};

B::B(){}void B::sub(int a,int b){    cout<<"a-b="<<a-b<<endl;}

class MyFactory{public:    MyFactory();public:       static MyBase* createMyNeed(int iWhich);};

MyFactory::MyFactory(){}MyBase* MyFactory::createMyNeed(int iWhich){    MyBase *mb;    if(iWhich == 1)    {        mb = new A();    }    else if(iWhich == 2)    {        mb = new B();    }    return mb;}

int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    MyBase *mb = MyFactory::createMyNeed(1);    mb->add(3,4);    MyBase *mb2 = MyFactory::createMyNeed(2);    mb2->sub(5,4);    return a.exec();}

结果: