State 状态模式——对象行为型模式。

1.动机

在软件构建过程中,某些对象的状态如果改变,其行为也会随之发生变化。

2.定义

有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。

3.用自己的一句话概述

文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不一样。

4.优点

  • 状态模式将与特定状态相关的行为局部化到一个状态中,并且将不同状态的行为分割开来,满足“单一职责原则”。
  • 减少对象间的相互依赖。将不同的状态引入独立的对象中会使得状态转换变得更加明确,且减少对象间的相互依赖。
  • 有利于程序的扩展。通过定义新的子类很容易地增加新的状态和转换。

5.缺点

  • 状态模式的使用必然会增加系统的类与对象的个数。
  • 状态模式的结构与实现都较为复杂,如果使用不当会导致程序结构和代码的混乱。

6.使用场景

  • 当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为时,就可以考虑使用状态模式。
  • 一个操作中含有庞大的分支结构,并且这些分支决定于对象的状态时。

7.总结

  • 状态模式将所有与一个特定状态相关的行为都放入一个状态的子类对象中,在对象状态切换时,切换相应的对象;但同时维持状态的接口,这样实现了具体操作与状态转换之间的解耦。
  • 为不同的状态引入不同的对性爱那个是的状态转换变得更明确,而且可以保证不会出现状态不一致的情况,因为转化是原子性的——要么彻底转换过来,要么不转化。
  • 如果状态对象没有实例变量,那么各个上下文可以共享一个状态对象,从而节省对象开销。

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注