设计模式之简单工厂

来源:互联网 发布:有哪些育儿软件 编辑:程序博客网 时间:2024/06/18 13:28

原理

工厂创建产品时, 通过传入相应的参数创建相应的产品

  • 工厂

    class SimpleFactory{    public:        Products* Create(string str)        {             if(str == "A")                return new Pro_A;             else if(str == "B")                return new Pro_B;             else                return NULL;        }};
  • 产品

    class Products{public:    virtual void Do() =0;};class Pro_A : public Products{public:    virtual void Do()    {        cout<<"A is doing..."<<endl;    }};class Pro_B : public Products{public:    virtual void Do()    {        cout<<"B is doing..."<<endl;    }};
  • Client

        SimpleFactory sfac;    Products* pro;    pro = sfac.Create("A");    pro->Do();    pro = sfac.Create("B");    pro->Do();

优点

工厂类中包含了必要的逻辑判断, 根据客户端的选择动态实例化相关的类,比如这里客户端选择实例化产品”A”, “B”, 就获得了相应的具体产品.

缺点

当添加产品时, 要修改客户端的同时, 还要修改工厂里的Create方法;
完成上面同样的功能, 工厂方法就不需要修改Create, 只需要通过对Factory的继承来添加相应的产品;
工厂方法提供Factory接口, 让子类去实现具体产品的创建;

0 0
原创粉丝点击