场景:
一业务系统 报表的报送流程,状态有 未报送、已报送、审核通过 和 审核不通过退回 状态
定义:
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式:
示例:
接口类:
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