如何在没有多重继承的情况下执行此操作

我有一组扩展单个抽象类的类.这些类的子集需要对其中一个方法执行相同的实现,另一个类的子集需要该方法的另一个实现,而第三个子集需要另一个.总共大约有十个子类,但只有三种可能的方法实现. (这些类实现的许多其他方法没有任何共同之处.)

我正试图找出实现这一目标的最佳方法.我认为我在C中所做的是多重继承:创建仅实现此方法的三类,然后让子类从这三个类中的适当的一个继承.

Java中有这样做的最佳实践吗?

我正在考虑在主要的抽象类和孩子之间插入一个由三个抽象类组成的层.三者中的每一个都继承自主抽象类,并实现有问题的方法.然后孩子们继承了这三个人.但是我不喜欢的是,如果另一种方法带有类似的“分组”行为,并且它不对应于三个“中间层”类?那会很难看

这有什么意义吗?我匆匆写作……

编辑:所以,在问我问题后24小时,我收到了大约六种模式进行调查.我还不确定它们都是官方的设计模式名称.但我会调查每一个,然后报告(并选择一个正确的答案).到目前为止,模仿建议:

* Delegation

* Bridge

* Strategy

* Composition

* Decorator (if I was choosing on name alone, I choose this one)

我还需要补充一点,正在实现的方法需要访问几乎所有类的私有成员.所以这将是我选择的重要因素.

实际上,我在这里闻到了战略模式.

您可以将基类中的该方法委托给构造时传入的策略.子类只是通过一组策略中的任何一个作为其构造的一部分.策略本身可以在课外提供,也可以在内部提供私人课程.这最终可能会减少层次结构中的整体类.

话虽如此,这里还有其他气味,即使我提出的解决方案也是如此.您可能希望在更高级别上考虑接口(如其他解决方案所述)和组合,而不考虑继承.随着时间的推移,我得出结论,继承不是我的朋友.现在我尽可能地避免它.

相关文章
相关标签/搜索