继承与组合相结合-设计模式

时间:2018-10-25 10:15:50

标签: java design-patterns

抱歉,标题不清楚。 我有以下情况:

我有4种类型: Type1,Type2,Type3,Type4 。 (具有相同的结构:姓名孩子

我还有其他4种类型的孩子: Child1,Child2,Child3,Child4。(依次具有相同的结构: parent value )。

条件:Type1只能具有类型为Child1的子代; Type2-> child2,依此类推。

如果我在这种情况下使用继承,则所有类型均从SuperType继承,所有子代均从Children继承。

public class Children {

}

public class SuperType {
    private List<Children> children;
}

public class Type1 extends SuperType {

}

public class Child1 extends Children {

}

Type1可以具有Child2,Child3,Child4的孩子。那不是我想要的。

您对我可以用于这种情况的图案设计有任何想法吗?

1 个答案:

答案 0 :(得分:4)

您可以通过使SuperType通用并为Children使用类型参数来解决此问题:

public class SuperType<T extends Children> {
    private List<T> children;
}

然后子类将指定其自己的类型Children

public class Type1 extends SupperType<Child1>{}
public class Type2 extends SupperType<Child2>{}

然后您要做的就是让SuperType的API使用type参数。