一、模板模式介绍
模板方法模式通过在抽象类中定义算法的骨架(固定的流程),将某些实现细节延迟到子类去实现。模板方法模式是行为型设计模式的一种。
二、模板方法模式的核心角色
抽象模板类:
模板方法:定义算法的骨架,按照设定步骤调用方法,为了防止子类篡改,这个方法通常由final 修饰。
抽象方法:模板中的可变步骤,抽象模板类只声明,由子类去实现。
具体方法:模板中固定不变的步骤,子类继承使用。
钩子方法:抽象父类中定义,可以被子类重写,以影响模板方法的行为。
具体子类:
继承抽象父类,实现父类中的抽象方法。
三、模板模式小例子
抽象模板类:
java
public abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
public final void play() {
// 初始化游戏
initialize();
// 开始游戏
startPlay();
// 结束游戏
endPlay();
}
}
具体子类:
java
public class Chess extends Game {
@Override
void initialize() {
System.out.println("象棋游戏初始化");
}
@Override
void startPlay() {
System.out.println("象棋游戏开始");
}
@Override
void endPlay() {
System.out.println("象棋游戏结束");
}
}
java
public class Soccer extends Game {
@Override
void initialize() {
System.out.println("足球游戏初始化");
}
@Override
void startPlay() {
System.out.println("足球游戏开始");
}
@Override
void endPlay() {
System.out.println("足球游戏结束");
}
}
测试:
java
public class Test {
public static void main(String[] args) {
Game game = new Chess();
game.play();
System.out.println("=====================");
Game game1 = new Soccer();
game1.play();
}
}

四、模板模式总结:
使用模板模式可以将不变的逻辑提取到父类,减少重复代码的编写 。算法的整体结构由抽象父类控制,能保证核心流程的可控性。该模式也符合开闭原则,新增一个业务变体只需要新增一个子类继承抽象父类即可。