允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
状态模式回产生很多子类,是代码复杂,但是如果状态之间需要频繁切换的话,就需要使用状态模式了。
Context.java
public class Context implements State{
private State state;
/**
* 切换状态
* @param state
*/
public void switchState(State state){
this.state = state;
}
@Override
public void doAction() {
this.state.doAction();
}
}
state的实现类
StartState.java
public class StartState implements State {
@Override
public void doAction() {
System.out.println("开始啦");
}
}
StopState.java
public class StopState implements State {
@Override
public void doAction() {
System.out.println("结束啦");
}
}
状态接口
State.java
public interface State {
public void doAction();
}
测试类
public class Test {
public static void main(String[] args) {
Context context = new Context();
StartState startState = new StartState();
StopState stopState = new StopState();
context.switchState(startState);
context.doAction();
context.switchState(stopState);
context.doAction();
}
}