Mẫu thiết kế - Mẫu mẫu
Trong mẫu Template, một lớp trừu tượng trình bày (các) cách / (các) mẫu đã xác định để thực thi các phương thức của nó. Các lớp con của nó có thể ghi đè việc triển khai phương thức theo nhu cầu nhưng lời gọi phải theo cách giống như được định nghĩa bởi một lớp trừu tượng. Mẫu này nằm trong danh mục mẫu hành vi.
Thực hiện
Chúng ta sẽ tạo một thao tác xác định lớp trừu tượng Trò chơi với một phương thức mẫu được đặt thành cuối cùng để nó không thể bị ghi đè. Cricket và Football là các lớp cụ thể mở rộng Trò chơi và ghi đè các phương thức của nó.
TemplatePatternDemo , lớp demo của chúng tôi, sẽ sử dụng Game để chứng minh việc sử dụng mẫu mẫu.
Bước 1
Tạo một lớp trừu tượng với một phương thức mẫu là cuối cùng.
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();
}
}
Bước 2
Tạo các lớp cụ thể mở rộng lớp trên.
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!");
}
}
Bước 3
Sử dụng các trò chơi mẫu phương pháp chơi 's () để chứng minh một cách xác định chơi trò chơi.
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();
}
}
Bước 4
Xác minh kết quả đầu ra.
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!