zoukankan      html  css  js  c++  java
  • c++设计模式——工厂模式

    简单工厂模式,一个工厂,多个产品;增加一种产品,就要修改工厂类中的代码,违反了对扩展开放,对修改关闭原则,会使得代码边的臃肿

    #include <iostream>
    using namespace std;
    
    class Product
    {
    public:
        virtual void show()=0;
    };
    class PA:public Product
    {
    public:
        void show()
        {
            cout<<"this is a"<<endl;
            return ;
        }
    };
    class PB:public Product
    {
    public:
        void show()
        {
            cout<<"this is b"<<endl;
            return ;
        }
    };
    class Factroy
    {
    public:
        Product* create(int i)
        {
            switch (i)
            {
            case 1:
                return new PA();
                break;
            case 2:
                return new PB();
                break;
            default:
                return nullptr;
            }
            return nullptr;
        }
    };
    int main()
    {
        
        Factroy f;
        f.create(1)->show();
        f.create(2)->show();
    
        return 0;
    }

    定义一个创建对象的接口, 让其子类自己决定实例化哪一个工厂类,多个工厂多个产品,当增加一个新产品时,同时增加一个新工厂。增加新工厂属于扩展,不会修改以前工厂类和产品类的任何代码。

    #include <iostream>
    using namespace std;
    
    class Product
    {
    public:
        virtual void show()=0;
    };
    class PA:public Product
    {
    public:
        void show()
        {
            cout<<"this is a"<<endl;
            return ;
        }
    };
    class PB:public Product
    {
    public:
        void show()
        {
            cout<<"this is b"<<endl;
            return ;
        }
    };
    
    class Factroy
    {
    public:
        virtual Product* create()=0;
    };
    class FA:public Factroy
    {
    public:
        Product* create()
        {
            return new PA();
        }
    };
    class FB:public Factroy
    {
    public:
        Product* create()
        {
            return new PB();
        }
    };
    int main()
    {
        FA fa;
        fa.create()->show();
        FB fb;
        fb.create()->show();
        return 0;
    }
  • 相关阅读:
    url 路径的拼接
    java 实现导出Excel文件
    window 使用频率最高的快捷键
    jeesite 框架的简单应用
    一个软件开发者的解决问题的心得——善于利用蛛丝马迹
    在linux上安装dotnetcore
    c#多线程同步之EventWaitHandle使用
    sharepoint 2013 安装
    模板模式的应用
    正则表达式的应用
  • 原文地址:https://www.cnblogs.com/tianzeng/p/12458828.html
Copyright © 2011-2022 走看看