我有一个实现许多功能的A类。 A级非常稳定。

现在,我有了一个新的功能要求,其中一些功能与A所实现的功能匹配。我不能直接从A类继承我的新类,因为这会给我的新类带来很多冗余。

所以,我应该在两个类中都复制通用代码吗?

或者,我应该创建一个新的基类,然后将通用代码移至基类,并从中派生A类和新类吗?但这将导致我现有类(class)的变化。

那么,哪种方法更好呢?

最佳答案

除非有很好的理由不修改类A,否则应重构并建立一个公共(public)基(或者更好的是,一个既可以使用又可以从其派生的公共(public)类)。

您始终可以使用私有(private)继承来访问共享功能,而无需修改类作为外部接口(interface)-此更改将需要重建,但仅此而已。将所有功能保留在类A上,而仅将它们转发给共享的实现类。

您可能不想重构,而是复制代码的一个原因是,新类的功能可能会发生变化,而旧类中不需要进行相同的更改。不复制代码的原因之一是仅需在一个地方进行修复或更改。如果将要发生的更改将破坏原始类,那么也许您想复制代码。尽管在大多数情况下,仅当这两个类与您想像的不一样时,才会发生这种情况,并且您将努力尝试抽象出一组通用的功能。

关于c++ - 重构C++中的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/488687/

10-11 22:23
查看更多