返回首页

模板方法模式(面试版)

一、面试常考点

1. 模板方法模式解决什么问题

定义流程骨架,把可变步骤延迟到子类或配置实现。

2. 与策略模式区别

模板方法强调“流程固定,步骤可变”;策略强调“整体算法可替换”。

3. 常见追问

哪些步骤应该固化,哪些步骤应该开放。

二、细节介绍

1. 核心思想

不变流程上收,可变细节下放。

2. 优点

复用流程、降低重复代码、保证主流程一致性。

3. 代价

流程过早固化会降低灵活性。

三、示例代码

class BuildPipeline {
  run() {
    this.install()
    this.test()
    this.build()
    this.deploy()
  }

  install() {
    console.log('install deps')
  }

  test() {
    throw new Error('test() must be implemented')
  }

  build() {
    console.log('build artifacts')
  }

  deploy() {
    throw new Error('deploy() must be implemented')
  }
}

class FrontendPipeline extends BuildPipeline {
  test() {
    console.log('run unit tests')
  }

  deploy() {
    console.log('deploy to cdn')
  }
}

new FrontendPipeline().run()

四、常用应用场景

1. CI/CD 流水线

步骤稳定但实现因项目而异。

2. 页面渲染流程

固定生命周期中挂接不同业务步骤。

3. 数据处理流程

统一“读取-清洗-转换-输出”骨架。

五、高频追问标准答法(Q/A)

1. Q: 模板方法容易带来什么问题

A: 基类越来越臃肿,继承层级过深后维护成本上升。

2. Q: 什么时候优先模板方法

A: 业务流程高度稳定,且多个实现仅在局部步骤不同。