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