状态模式
对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。
State
public abstract class State {
public abstract void Handle(Context context);
}
ConcreteStateA
public class ConcreteStateA extends State {
@Override
public void Handle(Context context) {
System.out.println("Now is A state!");
context.setState(new ConcreteStateB());
}
}
ConcreteStateB
public class ConcreteStateB extends State {
@Override
public void Handle(Context context) {
System.out.println("Now is B state!");
context.setState(new ConcreteStateA());
}
}
Context
public class Context {
private State state;
public Context() {
this.state = new ConcreteStateA();
}
public void setState(State state) {
this.state = state;
}
public State getState() {
return state;
}
public void Handle(){
state.Handle(this);
}
}
让我们测试一下
public class test {
public static void main(String[] args) {
Context context = new Context();
context.Handle();
context.Handle();
context.Handle();
context.Handle();
}
}
输出