zoukankan      html  css  js  c++  java
  • 简单工厂模式

    1.静态工厂方法统一管理对象的创建。
    静态工厂方法通过传入的参数判断决定创建哪一类产品的实例,封装了对象的创建,客户端只管消费,实现了对责任(模块)的分割。

    2.静态工厂方法推迟了产品的实例化。
    通过XML配置文件就能改变具体要创建的产品实例,修改为其它的产品实例,代码不须重新编译

    注意:

    抽象基类的析构函数必须为虚函数

    #include <iostream>
    #include <cstring>
    #include <string>
    using namespace std;
    
    class CPU
    {
    public:
        virtual void show() = 0;
        virtual ~CPU(){}  // 抽象基类的析构函数必须是虚析构,以保证delete基类指针的时候,子类的析构函数能被调用,实现内存的完全清理
    };
    
    class CPUA : public CPU
    {
    public:
        virtual void show()
        {
            cout << "I am CPUA" << endl;
        }
        ~CPUA()
        {
            cout << "CPUA 被析构" << endl;
        }
    };
    
    class CPUB : public CPU
    {
    public:
        virtual void show()
        {
            cout << "I am CPUB" << endl;
        }
        ~CPUB()
        {
            cout << "CPUB被析构" << endl;
        }
    };
    
    class Factory
    {
    public:
        static CPU *produceCPU(const string &name)
        {
            CPU *ret = NULL;
            if (name == "CPUA")
            {
                ret = new CPUA();
            }
            else if (name == "CPUB")
            {
                ret = new CPUB();
            }
            return ret;
        }
    };
    
    void test()
    {
        CPU *cpu = Factory::produceCPU("CPUA");
        cpu->show();
        delete cpu;
        cpu = Factory::produceCPU("CPUB");
        cpu->show();
        delete cpu;
    }
    
    int main()
    {
        test();
        cin.get();
        return 0;
    }

    效果:

  • 相关阅读:
    Java
    Java
    Java
    Java
    Java
    Java
    Java
    Java
    JSON
    正则表达式
  • 原文地址:https://www.cnblogs.com/hupeng1234/p/6756346.html
Copyright © 2011-2022 走看看