设计模式之状态模式
概念
状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类
优点
本地化特定状态的行为,并为不同的状态划分行为
消除庞大的条件分支语句,通过把各种状态转移逻辑分布到State的子类之间,来减少相互间的依赖本地化在这里的意思是将与特定状态相关的行为封装起来,独立管理,从而实现清晰的状态划分和行为隔离,通过定义新的子类可以很容易地增加新的状态和转换
使状态转换显式化,清楚地定义状态及其之间的关系:每个状态的可能转换方向和条件是明确的,而不是隐藏在代码的逻辑中
可重用状态对象可以在Java中的各种上下文之间有效地共享,从而增强内存管理和性能
什么时候使用状态模式
- 对象的行为取决于它的状态,并且它必须在运行时根据状态改变其行为
- 操作具有依赖于对象状态的大型的、有多个部分的条件语句,状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化
示例
注意事项
- 可能导致大量的状态类
- 上下文类会因状态转换逻辑而变得复杂
设计模式之状态模式
http://s1mplecode.com/design-pattern/state.html