温馨提示×

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

小亿
91
2024-01-22 10:05:28
栏目: 编程语言

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

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

  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。

0