Create All kinds of guns.
设计重点:
1 基类作接口
2 继承类是各种不同的类
3 构建工厂类,然后根据需要创造不同的类,可以传入关键字,或者索引等。
#pragma once #include <string> #include <iostream> using namespace std; //Base class class Gun { public: virtual string description() { return "Generic Gun"; } }; //Derived class class MachineGun :public Gun { public: string description() { return "MachineGun - Gun for fast shoot"; } }; class LaserGun : public Gun { public: string description() { return "LaserGun - Melt everything with heat"; } }; class ShockwaveGun :public Gun { public: string description() { return "ShockwaveGun - shock down everything"; } }; class GofFactory_Gun { public: GofFactory_Gun() { } Gun *createGun(const string &type) { if ("MachineGun" == type) { return (new MachineGun); } else if ("LaserGun" == type) { return (new LaserGun); } else if ("ShockwaveGun" == type) { return (new ShockwaveGun); } else { return NULL; } } }; void GofFactory_Gun_Run() { GofFactory_Gun gofGun; Gun *g = gofGun.createGun("MachineGun"); cout<<g->description()<<endl; delete g; g = gofGun.createGun("LaserGun"); cout<<g->description()<<endl; delete g; g = gofGun.createGun("ShockwaveGun"); cout<<g->description()<<endl; delete g; }
原文地址:http://blog.csdn.net/ddupd/article/details/26500553