Я не уверен, что этот код использует составной или шаблонный шаблон? - PullRequest
0 голосов
/ 29 мая 2020

Я не уверен, что следующий код использует составной шаблон или шаблон шаблона. Или оба они верны.

public class Employee {
    ...
}
public class Manager extends Employee {
    private List<Employee> subordinates;
    public Manager(List<Employee> subordinates) {
        this.subordinates = subordinates;
    }
    public List<Employee> getSubordinates() {
        return this.subordinates;
    }
}

Причины использования шаблона шаблона: Код был использован шаблоном шаблона, который принадлежит шаблонам поведения. Поскольку определение шаблона - это скелет функции в операции, некоторые шаги откладываются на ее подклассы. В этом примере класс emplyee является скелетом, а менеджер расширяет emplyee. Однако другие друзья предпочитают использовать составной узор.

Я не уверен, какой из них правильный. Вы можете мне кое-что объяснить? Спасибо!

1 Ответ

0 голосов
/ 29 мая 2020

Что касается Составного шаблона , целью является группировка объектов в древовидную структуру для представления иерархии «часть-целое». В этом примере подчиненных можно рассматривать как «часть», а менеджера - как «целое». Итак, менеджер - это root дерева, а подчиненные - это лист дерева. А составной шаблон позволяет пользователям согласованно использовать отдельные и составные объекты. Кроме того, составной шаблон принадлежит шаблону структуры.

Напротив, шаблон шаблона определяет каркас алгоритма и откладывает некоторые шаги до подклассов. Это позволяет подклассам переопределять определенные шаги алгоритма без изменения его структуры. Основная особенность в том, что абстрактный класс должен быть его суперклассом. Более того, паттерн - это паттерн поведения.

Пример такого паттерна:

public abstract class Game {
   abstract void initialize();
   ...

public final void play(){
    initialize();
    ....
}

}

public class Cricket extends Game {
    @Override
    void initialize() {
      System.out.println("Cricket Game Initialized! Start playing.");
   }
     .....
     .....

}


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