Cor*_*ius 23 java inheritance frameworks
对于框架和指南的最大深度,是否有关于何时使用多级继承或在单个类中加入它们的最佳实践?
一些在Java世界中运行良好的既定实践/示例的引用在答案中会很好,因为这是从围绕Java的社区和框架的角度来看.
And*_*s_D 22
您可能正在寻找一个很好的规则,例如"不超过5级继承"但我真的怀疑有这样的规则.对象通常模拟现实世界的实体,所有这些实体的社区从未就规则达成一致(据我所知)......
一个"最佳实践"绝对是:赞成合成而不是继承.遵循本指南:定义一个没有其他超类的接口和实现.所有常见的领域和方法都伴随着行为和策略
另一方面,我们有时会模拟真实世界实体或结构,这些实体或结构已经具有深层次的实体.动物的分类是一个例子或代数结构.建模这种现有结构的框架需要深层次的层次结构,因为它应该跟随现实世界才能理解.
我认为,从维护的角度来看,尽可能浅的继承层次结构是正确的选择。通过多个层次结构跟踪错误,然后必须弄清楚应该在哪一层修复这些错误可能是一件棘手的事情。
在我看来,每个派生类都是"它自己的一个类",这个类的客户端,包括子类,一般不应该打扰或感兴趣,这个类和Object类之间有多少个类.
因此,我的回答是:不,让层次结构尽可能地深入,只要它有意义/似乎是合乎逻辑的.不要让层次结构深度影响是否要折叠两个类的决定.由于每个子类都是对它的基类的改进,我的经验表明,深度超过5或6个类很少有意义.
需要明确的是:正如其他人所指出的,你应该赞成合成而不是继承.然而,对我而言,这似乎回答了一个稍微不同的问题.
根据这篇文章,标准Java API的最大深度为9.