状态模式

当一个对象的内在状态改变时允许改变其行为, 这个对象看起来像是改变了其类.
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况. 把状态的判断逻辑转移到表示不同状态的一系列类当中, 可以把复杂的判断逻辑简化
如果这个状态判断很简单,那就没必要用状态模式了
状态模式使用一个对象可以在不同的状态下表现出不同的行为。

  • 状态的使用:
  • 比如表示一个人在一天不同时刻的工作内容.

跟策略模式的对比

  • 状态模式可以帮助对象来管理它的状态
  • 策略模式使得客户端可以选择不同的行为。
  • 一个不太容易看到的区别是,谁去驱动行为的改变。
  • 在策略模式中,是客户端驱动的,它给上下文信息提供了不同的策略
  • 在状态模式中,状态的迁移是由Context或者State对象自己来管理的
  • 从理论上说,策略模式和状态模式还有一个不同,前者定义的是一个对象“如何”去做一件事情,比如说如何对数据进行排序,而另一方面,状态模式定义的是“什么”以及“何时“,比如说一个对象能做什么,某个时间点它处于哪个状态。
堆排序 装饰器模式
You need to set install_url to use ShareThis. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×