亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
汉中市| 榆树市| 随州市| 宁城县| 河池市| 通许县| 兴宁市| 乌拉特中旗| 花垣县| 安国市| 桂东县| 霍州市| 雷山县| 虹口区| 张掖市| 鹰潭市| 花莲县| 大丰市| 高安市| 道孚县| 兴海县| 阿拉善盟| 卢氏县| 大港区| 泰宁县| 汨罗市| 陕西省| 天柱县| 百色市| 揭东县| 寿光市| 丹寨县| 上思县| 安远县| 宁武县| 伽师县| 天峨县| 修水县| 永年县| 通江县| 嘉义县|