java设计模式之状态模式
2018-07-01 23:05
495 查看
概念:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
场景:代码中包含太多与对象状态有关的条件语句。
UML图:
示例:
水的状态
固态
液态
气态
允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
场景:代码中包含太多与对象状态有关的条件语句。
UML图:
示例:
水的状态
/** * 水的状态 * */ public interface WaterState { void changeState(Water water); }
固态
package model.state.water; /** * 描述: * 固态 * * @author shilvfei * @create 2018-07-01 22:33 */ public class SolidState implements WaterState { @Override public void changeState(Water water) { if(water.getTemperature()<=0){ System.out.println("达到"+water.getTemperature()+"摄氏度,固态;可以吃冰棒了"); }else{ water.setWaterState(new LiquidState()); water.changeState(); } } }
液态
package model.state.water; /** * 描述: * * @author shilvfei * @create 2018-07-01 22:32 */ public class LiquidState implements WaterState { @Override public void changeState(Water water) { if(water.getTemperature()<100){ System.out.println("达到"+water.getTemperature()+"摄氏度,液态;喝水了!"); }else{ water.setWaterState(new GasState()); water.changeState(); } } }
气态
package model.state.water; /** * 描述: * 气态 * * @author shilvfei * @create 2018-07-01 22:24 */ public class GasState implements WaterState { @Override public void changeState(Water water) { System.out.println("达到"+water.getTemperature()+"摄氏度,气态;蒸汽,可以汗蒸了!"); } }
相关文章推荐
- 设计模式之状态模式java ——购物
- 设计模式_状态模式(Java)
- Java设计模式-状态模式(State)
- java设计模式之状态模式
- java设计模式_状态模式
- JAVA--状态模式(State)--设计模式二十
- java设计模式-状态模式(STATE)
- 对比Java设计模式编程中的状态模式和策略模式
- Java设计模式—状态模式
- java设计模式第15弹--状态模式
- Java设计模式之状态模式
- 【java设计模式】状态模式
- Java设计模式——状态模式(STATE PATTERN)
- Java设计模式之从[游戏中的兵种状态转换]分析状态(State)模式
- Java设计模式百例 - 状态模式
- JAVA设计模式:状态模式
- JAVA设计模式--State(状态模式)
- JAVA系列-设计模式-状态模式
- 设计模式(二十)----- 状态模式(State)----(JAVA版)
- java 设计模式 —— 浅析状态模式