首页/开发/代码质量与评审速查/模板方法 Template Method(行为型)
设计原则与模式62 条

模板方法 Template Method(行为型)

在基类定义算法骨架,把可变步骤交给子类实现:复用流程、约束扩展点;注意钩子方法的默认行为要安全,别让子类必须实现过多步骤。

意图固定骨架 + 可变步骤
机制抽象步骤 + 钩子(hook)
对比回调/函数式参数是它的轻量形态

Java 示例

Java 示例
abstract class DataMiner {
    final void mine(String path) {  // 骨架
        byte[] raw = open(path);
        parse(raw);
        analyze();
        close();
    }
    abstract void parse(byte[] raw);
    void analyze() { }  // 可选钩子
}

易错点

  • 骨架方法未声明 final:子类可整体覆写,约束失效
  • 钩子过多:子类被迫理解全流程细节

数据来源与参考

  • 《设计模式》(GoF)· Template Method
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌