首页 > 代码库 > 简单工厂模式
简单工厂模式
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; }
效果:
简单工厂模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。