简单工厂模式

Posted wanlifeipeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单工厂模式相关的知识,希望对你有一定的参考价值。

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;
}

效果:

 

以上是关于简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式学习——简单工厂模式工厂模式抽象工厂模式

PHP面向对象之选择工厂和更新工厂

设计模式-简单工厂工厂方法模式抽象工厂模式详解

设计模式之简单工厂模式

C++工厂模式(简单工厂工厂方法抽象工厂)

C++工厂模式(简单工厂工厂方法抽象工厂)