结合继承和组合 - 设计模式



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

我有 4 种类型:类型1、类型2、类型3、类型4。(具有相同的结构:名称和子项(

我还有其他 4 种类型的孩子:孩子 1、孩子 2、孩子3、孩子 4(它们又具有相同的结构:父级(。

条件:类型 1 只能有类型为子项的子项:子项 1;类型2->子项2等。

如果我在这种情况下使用继承:所有类型都继承自超类型,所有子类型继承自子类型。

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

类型 1 可以有来自孩子 2、孩子 3、孩子 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>{}

然后,您所要做的就是使 APISuperType使用类型参数。

最新更新