知识卡片
状态内聚转换
内容
状态模式把状态判断和状态响应交给具体状态类,环境对象只持有当前状态并转发请求。发散:当条件分支围绕状态膨胀时,把状态变成对象通常比继续堆 if 更清晰。
参考来源
- 位置:《秒懂设计模式 2021》第18章《状态》交通灯状态切换例子(源文件:_epub-src/OEBPS/Text/chapter018.html)
- 结论依据:原文明确交通灯从充斥if/else的切换逻辑重构为状态对象自行处理切换,环境对象只持有当前状态并转发,直接支持卡片论点。
- 原始内容:"我们看不到任何的切换逻辑了,之前代码中的一大堆if、else全都消失不见了……交通灯只是持有当前的状态,至于到底该如何响应及进行状态切换,全权交由当前状态对象处理。"