对象的行为依赖于它的状态,并且可以根据它的状态改变而改变它的相关行为。Context类是一个状态管理器,控制状态转换。
class Context {
private State state;
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
public void handler() {
this.state.handler(this);
}
}
interface State {
void handler(Context context);
}
class InitState implements State {
@Override
public void handler(Context context) {
System.out.println("init");
context.setState(new RunningState());
context.handler();
}
}
class RunningState implements State {
@Override
public void handler(Context context) {
System.out.println("running");
context.setState(new EndState());
context.handler();
}
}
class EndState implements State {
@Override
public void handler(Context context) {
System.out.println("end");
}
}