简单工厂模式--Factory

来源:互联网 发布:c语言基本 编辑:程序博客网 时间:2024/06/05 08:58

假设现在有一个游戏开发公司,有的程序员去写各种怪物,有的程序员去创建怪物对象,也就是说:后一种程序员是前一种程序员的客户。让后一种程序员去记住第一种程序员写的很多怪物的类名是很麻烦的,并且也不应该让后一种程序员可以随便修改第一种程序员的代码,即代码分离。这时候,可以利用简单工厂模式,后一种程序员可以利用生产怪物的工厂去创建各种各样的工厂,后一种程序员不需要知道这种怪物是如何被创建的。通过这个工厂,隔离两种程序员代码的直接交互。

现在,假设有怪物A,怪物B。

#include <iostream>#include <memory>using namespace std;//怪物基类class monster{public:virtual void show()=0;virtual ~monster(){}};//怪物Aclass monsterA:public monster{public:void show(){cout<<"怪物A"<<endl;}};//怪物Bclass monsterB:public monster{public:void show(){cout<<"怪物B"<<endl;}};//枚举怪物enum Type{monsterTypeA,monsterTypeB};//生产怪物的工厂class factory{public:monster* createMonster(Type mt){switch(mt){case monsterTypeA://创建A类怪物return new monsterA();break;case monsterTypeB://创建B类怪物return new monsterB();break;default:return 0;break;}}};int main(){factory f;//a使用智能指针auto_ptr<monster> a(f.createMonster(monsterTypeA));a->show();//b应该手动删除monster* b=f.createMonster(monsterTypeB);b->show();delete b;}