首先,看下两个设计模式的定义

  • 策略模式:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户
  • 模板方法模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤

通过一张表格总结其区别

策略模式 模板方法模式
行为型模式 ~
采取何种策略由外部决定 采用何种实现由外部决定
定义一系列算法并封装,可相互替换,独立于客户变化 定义算法骨架,将一些步骤延迟到子类实现
利用多态 利用继承
偏重于解决算法多样性对代码结构冲击的问题 侧重于业务流程复杂但稳定(整体算法结构不变),而其中某些步骤变化相对剧烈(一些步骤的具体实现不同)