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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章