指的是定义一个操作中的算法骨架,而将算法中的一些步骤延迟到子类当中,使得子类可以不改变该算法结构的情况下重新定义该算法的某些特点步骤。它是一种类行为模式。
    需要定义个模板类,通常是一个抽象类,定义了几个抽象方法,还有模板方法,在模板方法中调用了抽象方法,当需要实现一种具体的实现时,最后调用了模板方法,就会调用调用到子类实现的抽象方法中去。

    1. public abstract class Game {
    2. protected abstract void init();
    3. protected abstract void start();
    4. protected abstract void stop();
    5. /**
    6. * 模板方法
    7. * 一般为了恶意操作,都会给模板方法加上 final
    8. */
    9. public final void play() {
    10. // 初始化
    11. init();
    12. // 开始游戏
    13. start();
    14. }
    15. }
    1. public class FootBall extends Game {
    2. @Override
    3. protected void init() {
    4. System.out.println("足球比赛准备中...");
    5. }
    6. @Override
    7. protected void start() {
    8. System.out.println("足球比赛正式开始");
    9. }
    10. @Override
    11. protected void stop() {
    12. System.out.println("足球比赛结束了");
    13. }
    14. public static void main(String[] args) {
    15. Game footBall = new FootBall();
    16. footBall.play();
    17. }
    18. }