状态模式
模式定义
状态模式允许对象在内部状态改变时改变其行为,并且,此改变对于客户端透明。状态模式将不同状态下的对象行为进行解耦。该模式在GOF95中被分类为行为模式。
模式结构与说明
- Context 是一个类,它可以拥有一些内部状态,这些状态使用 State 接口表示
- 不管何时,Client调用 Context.request() 方法时,Context都将该调用委托给 State 对象处理
- 规定了所有具体状态的公共接口,这样确保了状态之间可以互相替换
- 都提供了它自己对于请求处理的实现
- 的状态发生改变,单这需要前者持有后者的引用
需要注意的是, 对象包含的方法数量取决于状态机支持的操作的数量,具体状态的数量则取决于状态机包含的状态的数量。
状态转换可能由 中完成状态转换。状态转换绝不会有客户代码驱动。
状态模式的优点:
- 简化应用逻辑控制,避免了庞大的if-else结构
- 更好的分离了状态与行为
状态模式的缺点:
- 由于每个状态引入一个 ,可能导致程序中出现太多的状态类,显得混乱
- 违反了OCP,当…
17 years ago
0