`

【设计模式】无尽加班何时休 --- 状态模式

阅读更多

一,概述

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

状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。

  意图:允许一个对象在其内部状态改变时改变它的行为

  适用场景:

  1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。

  2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。

二,示例

题目:根据不同时间段,显示不同时间段的精神状态

1)面向过程版本


2)工作状态分类版本

缺点:WriteProgram 中有太多的判断,如果更改时间段可能要改好几个,而且改错的风险极大


3)状态模式

主要解决的问题:当控制一个对象状态转移的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中。可以把复杂的逻辑简化。

优点:将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。

消除庞大的条件分支语句。


三,状态模式模板


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics