Объединить наследование и композицию - шаблон проектирования - PullRequest
0 голосов
/ 25 октября 2018

Извините за непонятное название.У меня есть следующий сценарий:

У меня есть 4 типа: Тип1, Тип2, Тип3, Тип4 .(которые имеют одинаковую структуру: имя и дети )

У меня есть еще 4 типа детей: Child1, Child2, Child3, Child4. (которые в свою очередь имеют одинаковую структуру: родительский и значение ).

Условие : Тип1 может иметь только потомков типа: Child1;Type2-> child2 и т. Д.

Если я использую Inheritance для этого случая: все типы наследуются от 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 голосов
/ 25 октября 2018

Вы можете решить эту проблему, сделав 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>{}

Все, что вам нужно будет сделать, это заставить API SuperType использовать параметр типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...