状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中。
State
public abstract class State { public abstract void handle(Context context); }
StateA
public class StateA extends State { public void handle(Context context){ context.state = new StateB(); } }
StateB
public class StateB extends State { public void handle(Context context){ context.state = new StateA(); } }
Context
public class Context { public State state; public Context(State state){ this.setState(state); } public void setState(State state){ this.state = state; System.out.println("当前状态:" + state); } public State getState(){ return this.state; } public void request(){ state.handle(this); } }
Client
class Client { public static void main(String[] args) { Context c = new Context(new StateA()); c.quest(); c.quest(); c.quest(); c.quest(); } }