Шаблоны дизайна - Шаблон шаблона
В шаблоне шаблона абстрактный класс предоставляет определенный способ (и) / шаблон (ы) для выполнения своих методов. Его подклассы могут переопределять реализацию метода в соответствии с необходимостью, но вызов должен быть таким же, как определено абстрактным классом. Этот шаблон относится к категории шаблонов поведения.
Реализация
Мы собираемся создать абстрактный класс Game, определяющий операции, с методом шаблона, установленным как final, чтобы его нельзя было переопределить. Cricket и Football - это конкретные классы, которые расширяют 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
Используйте Игровой метод шаблона игры «s () , чтобы продемонстрировать определенный способ играть игру.
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
Проверьте вывод.
Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!
Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!