class fighter { private: int m_iHealth; int m_iSpeed;//为了方便,这个值使用延时值,越大表示速度越慢 const int m_iHitPoint; char m_strName[260]; public: fighter(const char* strName); void hit(fighter* pfighter); bool isAlive(); }; |
上面的类可以清楚的抽象出我们所需要表达的数据类型之一,这里也许你已经发现了一些问题:
成员函数hit用来处理战斗事件,但是我们有不同的角色,fighter不可能只跟自己同样的对手作战,我们希望它能和任何角色战斗,当然,使用模板函数可以简单的解决这个问题。另外,我们必须去实现三个不同的类,并且这些类必须都实现这些属性和方法。即使这些问题我们都解决了,现在我们要组织两个队伍作战,我们希望使用一种群体类型来描述它们,问题是我们必须针对每一种类建立相应的群体结构,当然你可以认为3个不同的类型不是很多,完全可以应付,那么如果有一天系统升级,你需要管理上百种类型的时候,会不会头大呢?