Latest web development tutorials

Шаблон Режим

В режиме шаблона (Template Pattern), и абстрактным классом, который определяет, как выполнить это раскрывает метод / шаблон. Его подклассы должны переопределить метод можно достичь, но называется будет определен абстрактный класс. Этот тип шаблонов проектирования относятся поведенческие модели.

введение

Цель: Определить алгоритм работы скелет, в то время как откладывая некоторые шаги для подклассов.Метод Шаблон позволяет подклассы алгоритма без изменения структуры конкретного шага алгоритма может быть пересмотрена.

Главное Решение: Некоторые распространенный метод, но в каждом подклассе переписывают этот подход.

Когда использовать: Есть некоторые общие методы.

Как решить: это общий алгоритм абстрагируется.

Код ключа: абстрактный класс реализует другие шаги в реализации суб-класса.

Примеры применения: 1, когда в доме , построенном, фундаментов, электропроводка, водопроводные трубы одинаковы, только во второй части здания есть шкаф плюс плюс заборы различия.2, Путешествие на Запад установить хороший Будду внутри 81 трудно, это логическая структура верхнего уровня. 3, Spirng в поддержку Hibernate, некоторые из них уже дали хороший способ формирования пакетов, таких как открытые сделки, получение сессию, завершает сеанс и других программистов, которые не повторяются писать хорошие нормы кода, прямой бросок субъект может быть сохранен.

Преимущества: 1, часть того же пакета, расширенная переменную часть.2, извлечь общий код, прост в обслуживании. 3, поведение находится под контролем родительского класса, подкласса реализации.

Недостатки: каждый из различных реализаций требуют подкласс для достижения, что приводит к увеличению числа классов, что делает систему более существенным.

Сценарии использования: 1, множественный общий метод подклассу, и та же самая логика.2, важные, сложные методы можно рассматривать как метод шаблона.

Примечание: Для предотвращения вредоносных действий, в сочетании с общими методами шаблона являются окончательными ключевые слова.

реализация

Мы создадим пользовательское действиеигрыабстрактный класс, в котором способ шаблон установлен в финале, поэтому он не будет переписан.КрикетифутболИгра является продолжением класса сущностей, который переопределяет абстрактный класс.

TemplatePatternDemo,мы продемонстрировать использование классаGame, чтобы продемонстрировать использование шаблона шаблона.

Шаблон модели UML диаграмма

Шаг 1

Создать абстрактный класс, его метод шаблон установлен в финале.

Game.java

общественного абстрактного класса Game {
   абстрактной юридической силы Initialize ();
   абстрактные пустота startPlay ();
   абстрактные пустота люфта ();

   // Шаблон общественности окончательным недействительным игра () {

      // Инициализация игры Initialize ();

      // Начинаем игру startPlay ();

      // Конец игры люфта ();
   }
}

Шаг 2

Создание расширяет классы сущностей выше класса.

Cricket.java

Открытый класс Крикет расширяет игру {

   @Override
   недействительным люфта () {
      System.out.println ( "Сверчок Игра закончилась!");
   }

   @Override
   недействительным Initialize () {
      System.out.println ( "играть в крикет игра Инициализирован Старт!».);
   }

   @Override
   недействительным startPlay () {
      System.out.println ( "Сверчок игра началась Наслаждайтесь игрой.!");
   }
}

Football.java

Открытый класс Футбол расширяет игру {

   @Override
   недействительным люфта () {
      System.out.println ( "Футбол Игра закончилась!");
   }

   @Override
   недействительным Initialize () {
      System.out.println ( "играть в футбол игра Инициализирован Старт!».);
   }

   @Override
   недействительным startPlay () {
      System.out.println ( "Футбол игра началась Наслаждайтесь игрой.!");
   }
}

Шаг 3

Играс помощью метода шаблонов воспроизведения () , чтобы продемонстрировать игру определены.

TemplatePatternDemo.java

Открытый класс TemplatePatternDemo {
   государственной статической силы основных (String []) {агдз

      Игры Игра = новый Крикет ();
      game.play ();
      System.out.println ();
      игра = новый футбол ();
      game.play ();		
   }
}

Шаг 4

Проверьте выход.

Крикет Игра Initialized! Начните играть.
Крикет игра началась. Наслаждайтесь игрой!
Крикет Игра закончилась!

Футбол Игра Инициализирован! Начните играть.
Футбол игра началась. Наслаждайтесь игрой!
Футбол Игра закончилась!