如何构建这组相关的Java类?

时间:2010-12-31 20:58:53

标签: java oop

所以我一直想知道如何最好地构建我拥有的一些Java类。

原始结构是三个类的层次结构:

BaseData&Behavior    
|
extends
|
BaseData&Behavior_WithExtraData&Behavior
|
extends
|
BaseData&Behavior_WithExtraData&Behavior_AndAlsoTwoMoreViewsAndCalculationsOnTheBaseData

需要新功能,这使我们想要一个类:

BaseData&Behavior_AndAlsoTwoMoreViewsOnTheBaseData

这个类不适合现有的层次结构!

如何在不重复代码的情况下以最优雅的方式创建这个新类?例如,在Ruby或Scala中,我可以使用模块或特征。

我认为在Java中这样做的方法是让AndAlsoTwoMoreViewsAndCalculationsOnTheBaseData代码进入BaseData&Behavior_AndAlsoTwoMoreViewsAndCalculationsOnTheBaseDataBaseData&Behavior_WithExtraData&Behavior_AndAlsoTwoMoreViewsAndCalculationsOnTheBaseData所委托的类。

您认为在Java中构建此内容的最佳方法是什么?

谢谢, 亚历

1 个答案:

答案 0 :(得分:4)

我会选择合成。我更喜欢继承,特别是在这样的情况下。听起来不像IS-A适用于任何一个基类。你只谈数据;没有关于行为。我不喜欢仅仅为了数据而继承。