用于添加功能的继承

Inheritance for adding functionality

本文关键字:继承 功能 添加 用于      更新时间:2023-10-16

我有一个关于类继承的简单问题。

假设我有class。它有一些基本的功能。现在我需要使用这个类,但我需要添加一些其他的功能,这些功能只针对这个目的。所以这个类的接口会被破坏。基本类在很多地方都以is的形式使用。

我应该从这些基本类派生吗?或者更好的解决方案?

更多细节:基本类是具有导入/导出XML、HTML和导航控件等功能的文本编辑器。它看起来很像stackoverflow的编辑器。我还需要添加一些方法这些方法只针对新目的

在c++中,继承(通常)不是为了代码重用。另一个选择是Composition,或者像Visitor或Decorator这样的模式。

我认为你可以使用组合,只是创建另一个类,并将这个特定的类作为成员,然后你可以实现任何功能,而不破坏主类的接口,并使用主类的所有当前方法。

如果你的类有函数a(), b()和c(),并且你添加了f(), g()和h(),而不修改a(), b()和c()的前置条件和后置条件,你的客户端不会注意到接口中的这个"变化"-它只是一个扩展,它将与你现有的代码兼容。在这种情况下,你可以"just do it"。

您的更改将如何影响现有代码?