Java设计模式之状态模式怎么实现

avatar
作者
筋斗云
阅读量:2

状态模式是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。在状态模式中,对象的行为是由其状态决定的。

下面是一个简单的状态模式的实现步骤:

  1. 定义一个状态接口(State),该接口声明了对象的行为方法。
  2. 实现状态接口的具体状态类,每个具体状态类实现了状态接口中的行为方法。
  3. 在上下文类(Context)中持有一个状态对象,该对象可以切换不同的状态。
  4. 在上下文类中提供一个方法(例如setState)来切换状态。
  5. 在上下文类中根据当前状态调用对应的行为方法。

下面是一个简单的Java代码实现:

// 定义状态接口 interface State {     void doAction(Context context); }  // 实现具体状态类 class StartState implements State {     public void doAction(Context context) {         System.out.println("Player is in start state");         context.setState(this);     } }  class StopState implements State {     public void doAction(Context context) {         System.out.println("Player is in stop state");         context.setState(this);     } }  // 上下文类 class Context {     private State state;      public Context() {         state = null;     }      public void setState(State state) {         this.state = state;     }      public State getState() {         return state;     } }  // 测试代码 public class StatePatternDemo {     public static void main(String[] args) {         Context context = new Context();          StartState startState = new StartState();         startState.doAction(context);          StopState stopState = new StopState();         stopState.doAction(context);     } } 

运行以上代码,输出结果为:

Player is in start state Player is in stop state 

在上面的示例中,状态接口State定义了一个行为方法doAction,StartState和StopState是具体的状态类,它们分别实现了doAction方法。上下文类Context持有一个状态对象,可以切换不同的状态。在测试代码中,我们首先创建一个Context对象,然后创建一个StartState对象,并通过doAction方法将Context对象的状态切换为StartState;然后创建一个StopState对象,并通过doAction方法将Context对象的状态切换为StopState。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!