结构图
客户端
public static void main(String[] args) {
// 设置Context的初始状态为ConcreteStateA
Context ctx = new Context(new ConcreteStateA());
ctx.request();
ctx.request();
ctx.request();
ctx.request();
}
类设计
public interface State {
public void handle(Context context);
}
public class Context {
private State state;
public Context(State state) {
this.state = state;
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
public void request() {
state.handle(this);
}
}
public class ConcreteStateA implements State {
@Override
public void handle(Context context) {
System.out.println("change state to B");
context.setState(new ConcreteStateB());
}
}
public class ConcreteStateB implements State {
@Override
public void handle(Context context) {
System.out.println("change state to A");
context.setState(new ConcreteStateA());
}
}