Java设计模式(二十一)状态模式
一、概述
状态模式是一种行为型设计模式,它允许对象在内部状态发生改变时改变它的行为。在状态模式中,将对象的状态与行为分离出来,状态的变化不影响行为,而行为的变化也不影响对象的状态。
二、代码
以下是一个状态模式的示例代码:
//1.定义一个接口表示状态 public interface State { void doAction(Context context); } //2.定义一个 Context 类,它持有一个 State 对象 public class Context { private State state; public Context() { state = null; } public void setState(State state) { this.state = state; } public State getState() { return state; } } //3.具体状态类,开始 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"; } } //4.具体状态类,停止 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"; } } //5.测试类 public class Test { public static void main(String[] args) { //使用 Context 来查看当状态 State 改变时的行为变化 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()); } }
在上面的代码中,我们定义了一个接口 State,表示状态,具体的状态类有 StartState 和 StopState。Context 类持有一个 State 对象,它的状态可以随着时间的推移而改变。在测试代码中,我们创建了一个 Context 对象,并初始化为 StartState,然后将其改为 StopState。在每个状态下,它的行为都会发生变化。