您的位置:首页 > 编程语言 > Java开发

java设计模式之状态模式

2018-07-01 23:05 495 查看
概念:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。

场景:代码中包含太多与对象状态有关的条件语句。



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