知识卡片
状态模式的定义与三个角色
内容
状态模式允许对象在内部状态改变时改变行为,是[[switch判断状态的三个问题]]的正式 解法。三个角色:State抽象状态(定义状态行为,封装Context引用触发切换);ConcreteState 具体状态(本状态行为+过渡到其他状态);Context环境角色(统一对外接口,持有当前状态并 委托执行)。发散:其类图与[[策略模式的定义与三个角色]]几乎一样,区别是策略并列可互换, 状态间有明确转移关系并会主动切换。
参考来源
- 位置:《设计模式之禅(第2版)》第26章《状态模式》(源文件:_epub-src/text/part0120.html)
- 结论依据:原文给出状态模式定义并说明State、ConcreteState、Context三个角色的职责,指出"具体环境角色有两个职责:处理本状态必须完成的任务,决定是否可以过渡到其他状态"。
- 原始内容:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类……ConcreteState——具体状态角色,每一个具体状态必须完成两个职责:本状态的行为管理以及趋向状态处理。