状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变它的行为,使对象看起来似乎修改了它的类。状态模式将状态封装成独立的类,并将动作委托到代表当前状态的对象。
// 状态接口
public interface State {
void handle(Context context);
}
// 上下文类
public class Context {
private State state;
public Context(State state) {
this.state = state;
}
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle(this);
}
}
// 具体状态A
public class ConcreteStateA implements State {
@Override
public void handle(Context context) {
System.out.println("State A handling request");
context.setState(new ConcreteStateB());
}
}
// 具体状态B
public class ConcreteStateB implements State {
@Override
public void handle(Context context) {
System.out.println("State B handling request");
context.setState(new ConcreteStateA());
}
}