状态设计模式

状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式3d

 

部分代码:对象

所谓对象的状态,一般指的就是对象实例的属性的值blog

  • 而行为指的就是对象的功能,再具体点说,行为大多能够对应到方法上

状态模式的功能就是分离状态的行为,经过维护状态的变化,来调用不一样状态对应的不一样功能配置

  • 也就是说,状态和行为是相关联的,它们的关系能够描述为:状态决定行为

  • 所谓平行性指的是各个状态的行为所处的层次是同样的,相互独立的、没有关联的,是根据不一样的状态来决定到底走平行线的哪一条
  • 行为是不一样的,固然对应的实现也是不一样的,相互之间是不可替换的

  • 平等性强调的是可替换性,你们是同一行为的不一样描述或实现,所以在同一个行为发生的时候,能够根据条件挑选任意一个实现来进行相应的处理

你们可能会发现状态模式的结构和策略模式的结构彻底同样,可是,它们的目的、实现、本质倒是彻底不同的方法

  • 还有行为之间的特性也是状态模式和策略模式一个很重要的区别,状态模式的行为是平行性的,不可相互替换的;
  • 而策略模式的行为是平等性的,是能够相互替换的

环境和状态处理对象im

  • 在状态模式中,环境(Context)是持有状态的对象,可是环境(Context)自身并不处理跟状态相关的行为,而是把处理状态的功能委托给了状态对应的状态处理类来处理。
  • 在具体的状态处理类中常常须要获取环境(Context)自身的数据,甚至在必要的时候会回调环境(Context)的方法,所以,一般将环境(Context)自身看成一个参数传递给具体的状态处理类
  •  客户端通常只和环境(Context)交互。客户端能够用状态对象来配置一个环境(Context),一旦配置完毕,就再也不须要和状态对象打交道了。客户端一般不负责运行期间状态的维护,也不负责决定后续到底使用哪个具体的状态处理对象。
相关文章
相关标签/搜索