首頁  >  文章  >  Java  >  狀態

狀態

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-09-22 22:15:32672瀏覽

狀態

狀態是行為設計模式之一,其中類別的行為會根據其狀態而變化。

關鍵概念
上下文:行為依狀態變化的類別/物件
狀態:抽象狀態
具體狀態:代表各種狀態,它改變Context類別的行為。

讓我們透過一個例子來理解這一點:

狀態.java

public interface 狀態 {
    public void doAction(Context context);
}

國家具體實施

public class Start狀態 implements 狀態 {
    private Context context;
    public Start狀態(){}
    @Override
    public void doAction(Context context){
        this.context = context;
        this.context.set狀態(this);
        System.out.println("Player is in Start狀態");
    }

    public String toString(){
        return "Start 狀態";
    }
}

public class End狀態 implements 狀態 {
    private Context context;
    public End狀態(){}
    @Override
    public void doAction(Context context){
        this.context = context;
        this.context.set狀態(this);
        System.out.println("Player is in End狀態");
    }

    public String toString(){
        return "End 狀態";
    } 
}

主要

public class Main {
    public static void main(String args[]){
        Context context = new Context();
        狀態 state = new Start狀態();
        state.doAction(context);
        //current state
        System.out.println(context.get狀態().toString());

        狀態 state2 = new End狀態();
        state2.doAction(context);
        //new 狀態
        System.out.println(context.get狀態().toString());
    }
}

輸出:

Player is in Start狀態
Start 狀態
Player is in End狀態
End 狀態

註:以上代碼遵循ISP、LSP、SRP、OCP的紮實原則

以上是狀態的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn