允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。
Context: 环境类
State: 抽象状态类
ConcreteState: 具体状态类
抽象状态类
public interface State {
public void doAction(Context context);
}
具体状态类
public class StartState implements State {
@Override
public void doAction(Context context) {
context.setState(this);
}
}
public class StopState implements State {
@Override
public void doAction(Context context) {
context.setState(this);
}
}
环境类
public class Context {
private State state;
public Context(){
state = null;
}
public void setState(State state){
this.state = state;
}
public State getState(){
return state;
}
}
调用类
public class Client {
public static void main(String[] args) {
Context context = new Context();
StartState startState = new StartState();
startState.doAction(context);
StopState stopState = new StopState();
stopState.doAction(context);
}
}