摘要: 假设你整在写一个视频游戏软件,由于不同的人物可能以不同的方式计算它们的健康指数,将healthValue声明为virtual似乎再明白不过的做法:class GameCharacter { public: virtual int healthValue()const; ... };由于这个设计如此明显,你可能没有认真考虑其他替代方案。为了帮助你跳脱面向对象设计路上的常轨,让我们考虑其他一些解法:藉由Non-virtual interface手法实现Template Method模式有个思想流派主张virtual函数应该几乎总是private。他们建议,较好的设计是保留healthValue.. 阅读全文
posted @ 2012-02-10 22:32 lidan 阅读(596) 评论(0) 推荐(0) 编辑
摘要: 身为class设计者,有时候你希望derived class只继承成员函数的接口(也就是声明):有时候你又希望derived class同时继承函数的 接口和实现,但又希望能够覆写(override)它们所继承的实现:又有时候你希望derived class同时继承函数的接口与实现,并且不允许覆写任何东西。 让我们考虑一个展现绘图程序中各种几何形状的class继承体系: cla... 阅读全文
posted @ 2012-02-10 14:37 lidan 阅读(783) 评论(0) 推荐(1) 编辑