Java 狀態模式

場景:

        一業務系統 報表的報送流程,狀態有 未報送、已報送、審覈通過 和 審覈不通過退回 狀態

定義:

    當一個對象的內在狀態改變時允許改變其行爲,這個對象看起來像是改變了其類。

狀態模式:

示例:

  接口類:

public interface  WaterState {

    public void state();

}

  水凝固狀態類:

public  class FreezeState implements WaterState {

    public void state(){
        System.out.println("Water freezing");
    }
}

  水蒸發類:

public class EvaporateState implements WaterState {

    public void state(){
        System.out.println("Water evaporating");
    }

}
容器類,對應模式中的Context類:

public class Water implements WaterState {

    private WaterState waterState;

    public WaterState getWaterState() {
        return waterState;
    }

    public void setWaterState(WaterState waterState) {
        this.waterState = waterState;
    }

    @Override
    public void state() {
        System.out.println("Water start changed ...");
        waterState.state();
    }
}
測試類:
public class WaterMain {
    public static void main(String args[]) {
        Water water = new Water();
        WaterState waterState = new EvaporateState();
        water.setWaterState(waterState);
        water.state();
    }
}
結果:

Water start changed ...
Water evaporating


發佈了148 篇原創文章 · 獲贊 10 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章