場景:
一業務系統 報表的報送流程,狀態有 未報送、已報送、審覈通過 和 審覈不通過退回 狀態
定義:
當一個對象的內在狀態改變時允許改變其行爲,這個對象看起來像是改變了其類。
狀態模式:
示例:
接口類:
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