一个对象在其内部状态改变时改变其行为,这个对象我们可以称为状态对象,所以状态模式是一种对象行为型模式。
上下文类:
public class Context {
private State state;
public Context(){
state = null;
}
public void setState(State state){
this.state = state;
}
public State getState(){
return state;
}
}
抽象状态类:
public abstract class State {
public void doAction(Context context);
}
具体状态类:
public class ConcreteState implements State {
public void doAction(Context context) {
System.out.println("Player is in start state");
context.setState(this);
}
public String toString(){
return "Start State";
}
}
调用代码:
public class StatePatternDemo {
public static void main(String[] args) {
Context context = new Context();
ConcreteState concreteState = new ConcreteState();
concreteState.doAction(context);
System.out.println(context.getState().toString());
}
}
状态模式分为简单状态模式和可切换状态模式。