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

  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();
}

结果:

学习模式----工厂模式(2)_第1张图片



你可能感兴趣的:(学习模式----工厂模式(2))