简单工厂模式
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; }
效果:
以上是关于简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章