【发布时间】:2012-01-02 18:09:16
【问题描述】:
我有一组扩展单个抽象类的类。这些类的一个子集需要其中一个方法的相同实现,类的另一个子集需要该方法的另一个实现,而第三个子集需要另一个。总共有大约十个子类,但其中一种方法只有三种可能的实现。 (类实现的许多其他方法没有共同点。)
我正在尝试找出实现这一目标的最佳方法。我认为我在 C++ 中会做的是多重继承:创建三个只实现此方法的类,然后让子类从这三个类中的适当一个继承。
是否有在 Java 中执行此操作的最佳实践?
我正在考虑在主要抽象类和子抽象类之间设置三个抽象类的中间层。这三个中的每一个都从主抽象类继承,并实现了所讨论的方法。然后孩子们从这三个人那里继承。但是我不喜欢的是,如果另一种方法带有类似的“分组”行为,并且它不对应于三个“中间层”类怎么办?那会变得丑陋
这有任何意义吗?我写的很匆忙……
编辑:因此,在提出我的问题 24 小时后,我收到了大约六种要调查的模式。我还不确定它们都是官方的设计模式名称。但我将调查每一个,然后报告(并选择正确的答案)。目前建议的模式:
* Delegation
* Bridge
* Strategy
* Composition
* Decorator (if I was choosing on name alone, I choose this one)
我还需要补充一点,正在实现的方法需要访问该类的几乎所有私有成员。所以这将是我选择的重要因素。
【问题讨论】:
标签: java inheritance