重构类层次结构的最佳方法

时间:2016-10-14 12:34:15

标签: c++ polymorphism refactoring class-hierarchy

我有一个班级CGrandMother,其公共方法virtual bool Compute()可以

virtual bool Compute()
{
    return false;
}

来自CGrandMother的{​​{1}}公开CMother未实现Compute。现在CMother公开C1C2来实现virtual bool Compute()。现在virtual bool C1::Compute()virtual bool C2::Compute()分别为C1C2做了很多适当的事情,但也有很多相同的内容适用于CMother。现在有一个类CFamily作为成员指向CMother,并且代码Compute中几乎所有地方都通过表单行调用

ptrCMother->Compute();

我如何分析与CMotherC1中完成的C2相关的常见内容,以便我不必更改所有ptrCMother->Compute();行?< / p>

1 个答案:

答案 0 :(得分:2)

答案应该非常简单。你说“很多相同的东西适合CMother”。因此,您应该将它们分解为CMother的成员函数。由于看起来只有从CMother派生的类才需要该功能,因此您应该将新成员函数标记为“protected”。 @ 0x5453所说的是单向的;但我建议使用一个新函数,以便单独留下公共方法CMother :: Compute。可能有另一个CMother的子类没有实现Compute并依赖CMother :: Compute来做某些事情。