简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。
可参考如下连接:
例子如下:
- /*
- * 简单工厂模式
- */
- #include <iostream>
- using namespace std;
- class Base //基类
- {
- public:
- virtual void print()
- {
- cout << "Base show()" << endl;
- };
- };
- class Derived_A : public Base //派生类A
- {
- public:
- void print()
- {
- cout << "Derived_A show()" << endl;
- };
- };
- class Derived_B : public Base //派生类B
- {
- public:
- void print()
- {
- cout << "Derived_B show()" << endl;
- };
- };
- class Factory //工厂
- {
- public:
- Base *CreateApi( int flag );
- };
- Base *Factory::CreateApi( int flag )
- {
- if( 1 == flag )
- {
- return new Derived_A();
- }
- else if ( 2 == flag )
- {
- return new Derived_B();
- }
- }
- Base *CreateProduction( int flag )
- {
- if( 1 == flag )
- {
- return new Derived_A();
- }
- else if ( 2 == flag )
- {
- return new Derived_B();
- }
- }
- int main()
- {
- Base *p = NULL;
- //Factory f;
- // p = f.CreateApi( 1 );
- p = CreateProduction( 1 );
- p->print();
- }
如上代码有个问题,就是在factory工厂类中,调用CreateApi时,每次都要New一个对象,这样很浪费时间和空间,而且是没有必要的。
所以需要修改factory工厂类。在其Factory()构造函数中创建一个vector对象,vector对象中的元素是具体的Derived_A对象和Derived_B对象。之后在调用CreateApi方式时,就不需要每次都New一个新对象了。
阅读(2943) | 评论(0) | 转发(0) |