JAVA语言版模板模式
创建包含模板方法的抽象类:
public abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
//模板
public final void play(){
//初始化游戏
initialize();
//开始游戏
startPlay();
//结束游戏
endPlay();
}
}
创建实现抽象类的实体子类:
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!");
}
}
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!");
}
}
使用TemplatePatternDemo类演示模板方法的调用:
public class TemplatePatternDemo {
public static void main(String[] args) {
Game circket = new Cricket();
circket.play();
System.out.println("");
Game football =new Football();
football.play();
}
}
输出结果:
准备进行板球游戏
开始板球游戏
结束板球游戏
准备进行足球游戏
开始足球游戏
结束足球游戏