public abstract class Game { /** * 创建一个定义操作的 Game 抽象类,其中,模板方法设置为 final,这样它就不会被重写。 * Cricket 和 Football 是扩展了 Game 的实体类,它们重写了抽象类的方法 */ //初始化游戏 public abstract void initialize(); //开始游戏 public abstract void startPlay(); //结束游戏 public abstract void endPlay();
//模板 public final void play(){ initialize();
startPlay();
endPlay(); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
//创建扩展了上述类的实体类 public class Cricket extends Game{ @Override public void initialize() { System.out.println("Cricket Game Finished!"); }
@Override public void startPlay() { System.out.println("Cricket Game Initialized! Start playing."); }
@Override public void endPlay() { System.out.println("Cricket Game Started. Enjoy the game!"); } }
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public class Football extends Game{ @Override public void endPlay() { System.out.println("Football Game Finished!"); }
@Override public void initialize() { System.out.println("Football Game Initialized! Start playing."); }
@Override public void startPlay() { System.out.println("Football Game Started. Enjoy the game!"); } }
1 2 3 4 5 6 7 8 9 10 11
public class TemplatePatternDemo { public static void main(String[] args) {
Game game = new Cricket(); game.play(); System.out.println(); game = new Football(); game.play(); } }