当前位置: 备案域名出售 > 建站教程>正文

用继承来进行设计

一旦理解了多态性,你就会觉得所有东西应该都是继承下来的,因为多态性实在是太聪明了。但是这样做会加重设计的负担;实际上,如果你一遇到“要用已有的类来创建新类”的情况就想到要用继承的话,事情就会毫无必要地变得复杂起来了。

较好的办法还是先考虑合成,特别是当你不知道该继承那个类的时候。合成并不强求你把设计搞成一个类系。此外它还更灵活,因为使用合成的时候,你可以动态地选择成员的类型(以及它们的行为)而使用继承的话,就得在编译时指明对象的确切类型。

但是程序运行时函数的reference可以连到另一个对象上,因为可以用其它对象来替换它,于是构造函数的行为就发生了变化。这样你就在运行时获得了高度的灵活性。这也被称为状态模式。反观继承,它不能让你在运行时继承不同的类;这个问题在编译的时候就已经定下来了。

有一条一般准则“使用继承来表示行为的不同,而用成员数据来表示不同的状态。”两个派生类用来表示方法的不同,而变量则使用合成来表示状态的变化。在这两种情况下,状态的不同会导致行为的不同。

« 上一篇下一篇 »