我有很长的类继承层次结构。例如:
-MyAbstractObject
--MyAbstractUiObject
---MyAbstractTable
-----MyAbstractPageableTable
-------MyAbstractScrollableTable
---------MyAbstractStateblaTable
等等...
我在
Code complete
处读到,理想的继承深度为3。有时可以使继承深度达到7-9。但是我有深深的继承力11!如何更改架构?哪种设计模式适用于我的情况?不好的是,我可以更改继承层次结构中
MyAbstractPageableTable
和MyAbstractScrollableTable
的位置。由于我的目标是单一职责,所以这两个类别没有混合在一起。我也想为用户提供不同的接口(API) 最佳答案
通常,最好使用策略模式而不为每个用例创建一个子类。但是很难给出任何建议,因为这取决于具体情况。
在您的示例中,我想您可以执行“表实现”并为其提供一个策略对象,该对象可以处理例如Pagenation或表应支持的任何其他显示策略。
根据约书亚·布洛赫(Joshua Bloch)的“有效Java”(Effective Java),通常最好使用组合而不是继承。我认为更大的继承深度并不坏,只要它们可以理解,我认为这不是11个级别。