• 工厂类----简单工厂(1)


    
    
       工厂类集中了所有实例的创建逻辑,所以"高内聚"方面做的并不好,当系统的具体产品不断增多时,可能会出现要求工厂类也要做相应的修改,扩展性并不是很好。
    有继承、虚函数重写、父类指针指向子类对象会发生多态。
      
    class Fruit
    {
    public:
        virtual void get_fruit()
        {
            std::cout<<"Fruit:getFruit"<<std::endl;
        }
    };
    
    class Pear : public Fruit
    {
    public:
        virtual void get_fruit()
        {
            std::cout<<"Pear:getFruit"<<std::endl;
        }
    };
    
    class Banana : public Fruit
    {
    public:
        virtual void get_fruit()
        {
            std::cout<<"Banana:getFruit"<<std::endl;
        }
    };
    
    //dependency
    class Factory
    {
    public:
        Fruit* Create(char *name)   //简单工厂的创建工作 业务逻辑在里面
        {
            if(strcmp(name,"Pear")==0)
            {
                return new Pear();
            }
            else if (strcmp(name,"Banana")==0)
            {
                return new Banana();
            }
            else
            {
                return NULL;
            }
        }
    };
    
       工厂类集中了所有实例的创建逻辑,所以“高内聚”方面做的并不好,当系统的具体产品不断增多时,可能会出现要求工厂类也要做相应的修改,扩展性并不是很好。
    有继承、虚函数重写、父类指针指向子类对象会发生多态。



    简单工厂模就是有一个专门生产某个产品的类。
    比如下图中的鼠标工厂,专业生产鼠标,给参数0,生产戴尔鼠标,给参数1,生产惠普鼠标。

     

     
  • 相关阅读:
    Redis-Sentinel 哨兵
    virtualenv and virtualenvwrapper
    C/C++中extern关键字详解
    C++ 中文拼音排序方法。
    vector排序
    VS2013 Ctrl+Shift+F 没反应
    PostMessage 解析
    CTextUI 文本控件 显示数字方法
    SetTimer API函数
    CEditUI 控件使用
  • 原文地址:https://www.cnblogs.com/mathyk/p/9756347.html
Copyright © 2020-2023  润新知