• 工厂类----简单工厂(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,生产惠普鼠标。

     

     
  • 相关阅读:
    线性表之链式存储结构
    最大公约数:辗转相除法
    字符串系列之:逆序输出字符串
    链表有关的常见面试题
    从数组中找出最大的和最小的数
    C语言实现简单线程池
    线性表之顺序存储结构
    新学了姜葱豆腐
    渗透1
    MySQL注入中新Tips
  • 原文地址:https://www.cnblogs.com/mathyk/p/9756347.html
Copyright © 2020-2023  润新知