码迷,mamicode.com
首页 > 其他好文 > 详细

简单工厂模式

时间:2017-04-24 13:59:43      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:产品   统一   效果   抽象   实例   pre   创建   分享   对象   

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

效果:

技术分享

 

简单工厂模式

标签:产品   统一   效果   抽象   实例   pre   创建   分享   对象   

原文地址:http://www.cnblogs.com/hupeng1234/p/6756346.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!