在状态模式中,类的行为是基于它的状态改变的。 我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
创建一个接口:
public interface State { public void doAction(Context context); }创建实现接口的实体类:
public class StartState 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 StopState implements State { public void doAction(Context context) { System.out.println("Player is in stop state"); context.setState(this); } public String toString(){ return "Stop State"; } }创建 Context 类:
public class Context { private State state; public Context(){ state = null; } public void setState(State state){ this.state = state; } public State getState(){ return state; } }使用 Context 来查看当状态 State 改变时的行为变化:
public class Client{ public static void main(String[] args) { Context context = new Context(); StartState startState = new StartState(); startState.doAction(context); System.out.println(context.getState().toString()); StopState stopState = new StopState(); stopState.doAction(context); System.out.println(context.getState().toString()); } }输出:
Player is in start state Start State Player is in stop state Stop State