文章标题

来源:互联网 发布:java编写水仙花数 编辑:程序博客网 时间:2024/06/05 19:08

Effective C++ 条款35:
在一个视频游戏场景中,你打算为游戏内的任务设计一个继承体系。你的游戏是属于暴力砍杀游戏,剧中的任务由于被伤害或其他因素而降低生命值,因此你决定提供一个成员函数healthValue,他会返回一个整数,表示人物的生命值,这时将healthValue声明为一个virtual似乎是再明显不过了。
class GameCharacter{
public:
virtual int healthValue() const; //返回人物的生命值
。。。 //derived classes 可重新定义它
};
healthValue并未被申明为 pure virtual,这暗示我们将会有个计算生命值的缺省算法(见条款34)。
这的确是再明显不过的设计,单数从某个角度来说却反而成为了它的缺点。由于这个设计是如此的明显,你可能因此没有认真考虑其他方案。为了帮助你跳脱面对面对象设计路上的常规,让我们考虑一些解法。
Strategy

原创粉丝点击