知识卡片

建造者模式与状态模式组合封装不同的转移流程

普通读书笔记卡 · 1867.a.1.e

内容

[[状态模式的定义与三个角色]]定义了每个状态能做什么、能转到哪,但同一组状态在不同 场景可能需遵循不同转移顺序:正常运行开门→关门→运行→停止;紧急状态只允许关门→停止; 检修完全自由。这本质是对同批状态对象的不同组装——用[[建造者模式的定义与四个角色]]封装 “组合转移规则”,无需改State类即可构造多套流程。发散:状态模式管单个状态的行为与转移, 建造者模式管按场景组装路径。

参考来源

- 位置:《设计模式之禅(第2版)》第26章《状态模式》(源文件:_epub-src/text/part0121.html) - 结论依据:原文提出正常电梯运行、紧急状态、维修状态三套不同的运行逻辑需求,指出"需要我们把已经有的几种状态按照一定的顺序再重新组装一下,那这个是什么模式?……建造者模式!对,建造模式+状态模式会起到非常好的封装作用"。 - 原始内容:我要一个正常的电梯运行逻辑,规则是开门->关门->运行->停止;还要一个紧急状态(如火灾)下的运行逻辑,关门->停止……再要一个维修状态下的运行逻辑,这个状态任何情况都可以……需要我们把已经有的几种状态按照一定的顺序再重新组装一下……建造模式+状态模式会起到非常好的封装作用。