状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类,属于行为模式。
无涯教程将创建一个定义动作的 State 接口和实现 State 接口的具体状态类。 Context是一个带有状态的类。
演示类 StatePatternDemo 将使用 Context 和状态对象根据其所处的状态类型来演示Context行为的变化。
第1步 - 创建一个接口。
State.java
public interface State { public void doAction(Context context); }
第2步 - 创建实现State接口的具体类。
StartState.java
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"; } }
StopState.java
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"; } }
第3步 - 创建Context类。
Context.java
public class Context { private State state; public Context(){ state = null; } public void setState(State state){ this.state = state; } public State getState(){ return state; } }
第4步 - 使用上下文查看状态更改时的行为更改。
StatePatternDemo.java
public class StatePatternDemo { 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()); } }
第5步 - 验证输出。
Player is in start state Start State Player is in stop state Stop State
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)