知识卡片
状态对象化分支
内容
状态模式把随状态变化的行为分散到状态对象中,避免一个类里堆满状态条件分支。发散:当条件判断反复围绕同一状态机展开,状态对象通常比枚举加 if 更清楚。
参考来源
- 位置:第5章《行为型模式》5.8节「State(状态)」8.效果第1点(源文件:_epub-src/OEBPS/Text/part0088.xhtml)
- 结论依据:原文明确说明State模式将所有与一个特定状态相关的行为都放入一个对象中,避免了用数据值检查状态而使Context实现遍布相似条件语句的问题,直接支持卡片对状态模式把随状态变化的行为分散到状态对象中、避免堆满状态条件分支的论述。
- 原始内容:"State模式将所有与一个特定的状态相关的行为都放入一个对象中……另一个方法是使用数据值定义内部状态并且让Context操作来显式地检查这些数据。但这样将会使整个Context的实现中遍布看起来很相似的条件语句或case语句。"