状态模式

Catalogue   

定义

State Pattern:允许一个对象在其内部状态改变的时候改变其行为。

状态模式的状态是不可替换的而且是兄弟关系,但是策略模式是可以替换的彼此独立的。他们执行完之后的行为也不同,状态模式会更改状态但是策略模式执行完就是执行完。

类图

策略模式的类图一样…

角色

  • State: 抽象状态类,定义一个接口以封装与context的一个状态相关的行为
  • ConcreteState: 具体状态,每一子类实现一个与Context的一个状态相关的行为
  • Context: 状态上下文,维护一个ConcreteState子类的实例,这个实例定义当前的状态。

优缺点

  • 单一职责原则
  • 开闭原则
  • 封装了转换规则

使用场景

  • 播放器的不同状态

参考