Шаблон Режим
В режиме шаблона (Template Pattern), и абстрактным классом, который определяет, как выполнить это раскрывает метод / шаблон. Его подклассы должны переопределить метод можно достичь, но называется будет определен абстрактный класс. Этот тип шаблонов проектирования относятся поведенческие модели.
введение
Цель: Определить алгоритм работы скелет, в то время как откладывая некоторые шаги для подклассов.Метод Шаблон позволяет подклассы алгоритма без изменения структуры конкретного шага алгоритма может быть пересмотрена.
Главное Решение: Некоторые распространенный метод, но в каждом подклассе переписывают этот подход.
Когда использовать: Есть некоторые общие методы.
Как решить: это общий алгоритм абстрагируется.
Код ключа: абстрактный класс реализует другие шаги в реализации суб-класса.
Примеры применения: 1, когда в доме , построенном, фундаментов, электропроводка, водопроводные трубы одинаковы, только во второй части здания есть шкаф плюс плюс заборы различия.2, Путешествие на Запад установить хороший Будду внутри 81 трудно, это логическая структура верхнего уровня. 3, Spirng в поддержку Hibernate, некоторые из них уже дали хороший способ формирования пакетов, таких как открытые сделки, получение сессию, завершает сеанс и других программистов, которые не повторяются писать хорошие нормы кода, прямой бросок субъект может быть сохранен.
Преимущества: 1, часть того же пакета, расширенная переменную часть.2, извлечь общий код, прост в обслуживании. 3, поведение находится под контролем родительского класса, подкласса реализации.
Недостатки: каждый из различных реализаций требуют подкласс для достижения, что приводит к увеличению числа классов, что делает систему более существенным.
Сценарии использования: 1, множественный общий метод подклассу, и та же самая логика.2, важные, сложные методы можно рассматривать как метод шаблона.
Примечание: Для предотвращения вредоносных действий, в сочетании с общими методами шаблона являются окончательными ключевые слова.
реализация
Мы создадим пользовательское действиеигрыабстрактный класс, в котором способ шаблон установлен в финале, поэтому он не будет переписан.КрикетифутболИгра является продолжением класса сущностей, который переопределяет абстрактный класс.
TemplatePatternDemo,мы продемонстрировать использование классаGame, чтобы продемонстрировать использование шаблона шаблона.
Шаг 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! Начните играть. Крикет игра началась. Наслаждайтесь игрой! Крикет Игра закончилась! Футбол Игра Инициализирован! Начните играть. Футбол игра началась. Наслаждайтесь игрой! Футбол Игра закончилась!