• 工厂模式


    每次添加一个子类都必须在工厂类中添加一个判断分支,这样违背了开放-封闭原则,因此,工厂模式就是为了解决这个问题而产生的。
    既然每次都要判断,那我就把这些判断都生成一个工厂子类,这样,每次添加产品子类的时候,只需再添加一个工厂子类就可以了。
    这样就完美的遵循了开放-封闭原则。
    常用的场景
    基本与简单工厂模式一致,只不过是改进了简单工厂模式中的开放-封闭原则的缺陷,使得模式更具有弹性。将实例化的过程推迟到子类中,由子类来决定实例化哪个。
    优点
    基本与简单工厂模式一致,多的一点优点就是遵循了开放-封闭原则,使得模式的灵活性更强。
    //抽象产品类 制造类
    class Make
    {
    public:
        virtual void make() = 0;
    };
    
    //具体产品类 制造火车类
    class MakeTrain :public Make
    {
    public:
        void make() { cout<<"make Train"<<endl; }
    };
    
    //具体产品类 制造飞机类
    class MakePlane :public Make
    {
    public:
        void make() { cout << "make Plane" << endl; }
    };
    //抽象工厂类 
    class Factory
    {
    public:
        //返回具体产品类的指针
        virtual Make* createProduct() = 0;
    };
    
    //具体工厂类 制造火车的工厂
    class TrainFactory :public Factory
    {
    public:
        Make * createProduct()
        {
            Make* train = new MakeTrain();
            return train;
        }
    };
    
    //具体工厂类 制造飞机的工厂
    class PlaneFactory :public Factory
    {
    public:
        Make * createProduct()
        {
            Make* plane = new MakePlane();
            return plane;
        }
    };
    int main()
    {
        Factory * factory = new TrainFactory();
        Make *product = factory->createProduct();
        product->make();
    
        factory = new PlaneFactory();
        product = factory->createProduct();
        product->make();
    
        delete factory;
        delete product;
    }
  • 相关阅读:
    犹太人高成就的秘诀
    EXSI宿主机更换硬盘后虚机启动有问题
    Centos7 系统启动docker报错 inotify add watch failed
    Gluster的搭建和使用
    关于HA(2.102 -2.103 服务器排障)
    Fabric的简介
    关于CPU的一些操作(CPU设置超频)
    docker的安装和技巧
    linux 下查看wwn号
    HP 3par多路径安装方法
  • 原文地址:https://www.cnblogs.com/osbreak/p/10106146.html
Copyright © 2020-2023  润新知