/**
* 状态模式。
* @author Bright Lee
*/
public class StatePattern {
public static void main(String[] args) {
Context context = new Context();
context.request();
context.request();
}
}
class Context {
private State stateA;
private State stateB;
private State currentState;
public Context() {
this.stateA = new ConcreteStateA(this);
this.stateB = new ConcreteStateB(this);
this.currentState = stateA;
}
public void request() {
currentState.handle();
}
public State getStateA() {
return stateA;
}
public State getStateB() {
return stateB;
}
void setCurrentState(State currentState) {
this.currentState = currentState;
}
}
interface State {
void handle();
}
class ConcreteStateA implements State {
private Context context;
public ConcreteStateA(Context context) {
this.context = context;
}
public void handle() {
System.out.println("现在是状态A,马上转换到状态B。");
context.setCurrentState(context.getStateB());
}
}
class ConcreteStateB implements State {
private Context context;
public ConcreteStateB(Context context) {
this.context = context;
}
public void handle() {
System.out.println("现在是状态B,马上转换到状态A。");
context.setCurrentState(context.getStateA());
}
}
运行结果:
现在是状态A,马上转换到状态B。
现在是状态B,马上转换到状态A。