状态模式总结如下(可点击放大查看):
示例:
//状态模式
public class StateClient {
public static void main(String[] args) {
State initState = new ConcreteState1();
Context context = new Context(initState);
context.handle(); //处理请求
context.handle(); //处理请求
context.handle(); //处理请求
context.handle(); //处理请求
}
}
//上下文
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 handle() {
state.handle(this);
}
}
//抽象状态
interface State {
void handle(Context context);
}
class ConcreteState1 implements State{
@Override
public void handle(Context context) {
System.out.println("当前是状态1");
context.setState(new ConcreteState2());
}
}
class ConcreteState2 implements State {
@Override
public void handle(Context context) {
System.out.println("当前是状态2");
context.setState(new ConcreteState1());
}
}