Skip to Content
面试题库Design Patterns[面试题] 策略模式和模板方法模式有什么区别?

[面试题] 策略模式和模板方法模式有什么区别?

📖 版块 A:知识讲解版 (温故知新)

  • 策略模式

    1. 把一组可以互相替换的算法或处理逻辑抽象出来。
    2. 运行时根据场景选择不同策略。
    3. 核心是“同一目标,多种实现,可自由切换”。
  • 模板方法模式

    1. 在父类里定义好整体流程骨架。
    2. 把某些可变步骤留给子类实现或覆写。
    3. 核心是“主流程固定,局部步骤可变”。
  • 关键区别

    1. 策略模式偏组合,通过注入不同策略实现变化。
    2. 模板方法偏继承,通过子类覆写局部步骤实现变化。
    3. 策略更适合算法可替换,模板方法更适合流程骨架稳定。

🎤 版块 B:面试实战版 (高手逐字稿)

Q:策略模式和模板方法模式有什么区别?

💬 高手逐字稿

策略模式和模板方法模式,表面上都在解决“业务流程里有变化”的问题,但它们处理变化的方式完全不同。

策略模式的核心是:把一组可以互相替换的算法抽出来,然后在运行时根据场景切换。它更适合那种“同一件事情有多种做法”的场景,比如不同支付方式、不同定价策略、不同路由规则。

模板方法模式的核心是:把整体流程骨架固定在父类里,只把少数可变步骤留给子类去覆写。它更适合那种“主干流程稳定,但局部细节会变化”的场景,比如统一的数据导出流程,不同导出类型只改其中几个步骤。

如果做一个最直观的区分:

  • 策略模式更像“给你多个方案,运行时选一个”;
  • 模板方法更像“流程我已经定好了,你只需要填几个空”。

从实现角度看,策略模式更偏组合,因为上下文持有一个策略接口;模板方法更偏继承,因为它通常靠父类定义骨架、子类覆写步骤。

所以实际怎么选,关键看你的变化在哪里:

  • 如果变化的是整块算法,优先考虑策略;
  • 如果变化的是固定流程中的局部步骤,优先考虑模板方法。
最后更新于:
⏱️

登录后开始阅读

当前 MVP 版本只开放邮箱密码登录注册。完成登录后即可进入面试题内容。

还没有账号?先去注册