设计模式回顾之七:状态模式(State)
设计模式回顾系列文章: 主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。
------------------------------------------------
状态模式:
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
?
主要解决:当控制一个对象状态的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。
使用场景:
当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为时,就可以考虑使用状态模式。
一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。
?
程序实现:
抽象状态类,定义一个与Context相关的状态接口handle:
public static void main(String[] args){Context context = new Context(new ConcreteStateA());//初始化状态为Acontext.changeState();//每次请求都切换状态context.changeState();context.changeState();context.changeState();}
?
举例:用于消除庞大的条件分支语句的情况,通过把各种状态转移逻辑分布到State的子类之间,减少相互间的依赖。
?