1、基本介绍

  • 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
  • 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
  • 一些方法通用,却在每一个子类都重新写了这一方法。

    2、具体实现

    我们以制作游戏为例,制作游戏有几个通用步骤:加载/初始化游戏,开始游戏,结束游戏,我们把这几个通用步骤放到一个抽象类。在具体的游戏:篮球游戏、足球游戏,去完善各自的步骤细节。

  • 创建模板抽象类 ```java public abstract class Game { abstract void initialize();

    abstract void startPlay();

    abstract void endPlay();

    // 模板 public final void play() {

    1. // 初始化游戏
    2. initialize();
    3. // 开始游戏
    4. startPlay();
    5. // 结束游戏
    6. endPlay();

    }

}


- 创建具体实现类
```java
public class BasketballGame extends Game {
    @Override
    void initialize() {
        System.out.println("篮球游戏初始化");
    }

    @Override
    void startPlay() {
        System.out.println("篮球游戏开始玩");
    }

    @Override
    void endPlay() {
        System.out.println("篮球游戏结束了");

    }
}
public class FootballGame extends Game{
    @Override
    void initialize() {
        System.out.println("足球游戏初始化");
    }

    @Override
    void startPlay() {
        System.out.println("足球游戏开始玩");
    }

    @Override
    void endPlay() {
        System.out.println("足球游戏结束了");

    }
}
  • 测试

    public class TemplatePatternDemo {
      public static void main(String[] args) {
          Game game1 = new BasketballGame();
          game1.play();
    
          Game game2 = new FootballGame();
          game2.play();
    
      }
    }
    

    image.png