zoukankan      html  css  js  c++  java
  • 工厂类----简单工厂(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,生产惠普鼠标。

     

     
  • 相关阅读:
    7--docker-compose详解
    6--容器数据卷,发布镜像,Docker小结
    5-- Dockerfile 搭建 博客系统
    4--Docker之Dockerfile镜像定制
    3--Docker网络 ; Docker图形化界面
    2--Docker容器相关命令
    1--docker介绍、安装; docker镜像相关命令
    2、函数的核心内容
    1、函数的基本使用
    7、文件操作方法
  • 原文地址:https://www.cnblogs.com/mathyk/p/9756347.html
Copyright © 2011-2022 走看看