定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。
意图:允许一个对象在其内部状态改变时改变它的行为
适用场景:
1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。
2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。
public class Context { private State state; public void sampleOperation() { state.sampleOperation(); } public void setState(State state) { this.state = state; } }
public interface State { public void sampleOperation(); }
public class ConcreteState1 implements State { public void sampleOperation() { System.out.println("this is ConcreteState1"); } }
public class ConcreteState2 implements State { public void sampleOperation() { System.out.println("this is ConcreteState2"); } }
public class Client { public static void main(String[] args) { State s1 = new ConcreteState1(); State s2 = new ConcreteState2(); Context ctx = new Context(); ctx.setState(s1); ctx.sampleOperation(); ctx.setState(s2); ctx.sampleOperation(); } }
输出结果:
this is ConcreteState1
this is ConcreteState2