我有很长的类继承层次结构。例如:

-MyAbstractObject
--MyAbstractUiObject
---MyAbstractTable
-----MyAbstractPageableTable
-------MyAbstractScrollableTable
---------MyAbstractStateblaTable


等等...

我在Code complete处读到,理想的继承深度为3。有时可以使继承深度达到7-9。但是我有深深的继承力11!

如何更改架构?哪种设计模式适用于我的情况?不好的是,我可以更改继承层次结构中MyAbstractPageableTableMyAbstractScrollableTable的位置。由于我的目标是单一职责,所以这两个类别没有混合在一起。我也想为用户提供不同的接口(API)

最佳答案

通常,最好使用策略模式而不为每个用例创建一个子类。但是很难给出任何建议,因为这取决于具体情况。

在您的示例中,我想您可以执行“表实现”并为其提供一个策略对象,该对象可以处理例如Pagenation或表应支持的任何其他显示策略。

根据约书亚·布洛赫(Joshua Bloch)的“有效Java”(Effective Java),通常最好使用组合而不是继承。我认为更大的继承深度并不坏,只要它们可以理解,我认为这不是11个级别。

08-26 18:21
查看更多