用途

允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。

要素

  • State:状态接口,含有处理当前状态的Handler
  • ConcreteStateA/B:代表一个具体的状态,是State的实现类。
  • Context 接口:维护一个具体的状态,并且有针对状态的getter和setter。
  • 示例图:

Xnip2019-09-10_06-29-33.jpg

优缺点

  • 封装了转换规则
  • 可以让多个环境对象共享一个状态对象,从而减少系统中对象的个数。