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

  • 策略模式:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户
  • 状态模式:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为

通过一张表格总结其区别

策略模式 状态模式
行为型模式 ~
多个类区别不同的行为(算法) 多个类区别不同的状态
一组方案或算法的相互替换,采取何种策略由外部条件决定 主要解决复杂逻辑处理的状态迁移,这个过程由对象内部条件决定
策略类不依赖上下文 状态类依赖上下文