我有很长的类继承层次结构。例如:
-MyAbstractObject
--MyAbstractUiObject
---MyAbstractTable
-----MyAbstractPageableTable
-------MyAbstractScrollableTable
---------MyAbstractStateblaTable
等等...
我在代码完成
中读到,理想的继承深度是3。有时允许继承深度为7-9。但我有传承深11!
我如何改变我的架构?什么设计模式适用于我的案例?不好的是我可以在继承层次结构中更改 MyAbstractPageableTable
和 MyAbstractScrollableTable
的位置。这两个类没有混为一类,因为我的目标是单一责任。我还想为用户提供不同的接口(interface)(API)
最佳答案
通常最好使用策略模式,而不是为每个用例创建子类。但很难给出任何硬性建议,因为这取决于具体情况。
在您的示例中,我猜您可以执行表实现并为其提供一个策略对象,该对象可以处理例如分页或表应支持的任何其他显示策略。
根据 Joshua Bloch 的“Effective Java”,使用组合通常比使用继承更好。我不认为更大的继承深度是坏事,只要它们保持可理解性,我猜想 11 级的继承深度并非如此。
关于c# - 长继承层次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193132/