В шаблоне Шаблон абстрактный класс предоставляет определенный способ (ы) / шаблон (ы) для выполнения своих методов. Его подклассы могут переопределять реализацию метода по мере необходимости, но вызов должен быть таким же, как определено абстрактным классом. Этот шаблон относится к категории шаблонов поведения.
Реализация
Мы собираемся создать абстрактный класс Game, определяющий операции с методом шаблона, установленным как final, чтобы его нельзя было переопределить. Крикет и Футбол — это конкретные классы, которые расширяют Game и переопределяют его методы.
TemplatePatternDemo , наш демонстрационный класс, будет использовать Game, чтобы продемонстрировать использование шаблона.
Шаг 1
Создайте абстрактный класс с методом шаблона, являющимся окончательным.
Game.java
public abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); //template method public final void play(){ //initialize the game initialize(); //start game startPlay(); //end game endPlay(); } }
Шаг 2
Создайте конкретные классы, расширяющие вышеуказанный класс.
Cricket.java
public class Cricket extends Game { @Override void endPlay() { System.out.println("Cricket Game Finished!"); } @Override void initialize() { System.out.println("Cricket Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Cricket Game Started. Enjoy the game!"); } }
Football.java
public class Football extends Game { @Override void endPlay() { System.out.println("Football Game Finished!"); } @Override void initialize() { System.out.println("Football Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Football Game Started. Enjoy the game!"); } }
Шаг 3
Используйте шаблонный метод Game play (), чтобы продемонстрировать определенный способ игры.
TemplatePatternDemo.java
public class TemplatePatternDemo { public static void main(String[] args) { Game game = new Cricket(); game.play(); System.out.println(); game = new Football(); game.play(); } }
Шаг 4
Проверьте вывод.