定义

  • 允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。根据不同情况做出不同的处理。
  • State Pattern 隶属行为型设计模式
  • 状态模式主要解决的是当控制一个对象状态转化的条件表达式过于复杂的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。

优点

  • 每个状态都是一个子类,增加状态只需要增加一个子类。
  • 结构清晰,避免了if else 或者switch
  • 状态模式好处是将与特定的组昂泰相关的行为进行局部化,宾且将不同的状态行为分割开来。

状态与策略的比较

  • 在状态模式中,状态的变迁由内部条件决定,外界只需关心接口,不必关心其状态对象的转换。而在策略模式中,采取何种策略由外部条件决定。Strategy模式与Stats模式
  • 状态模式重在强调对象的内部状态的变化而改变对象的行为,策略模式重在外部对策的选择上,策略的选择由外部条件决定,算法动态切换。