java 设计模式 状态模式_java设计模式之状态模式

概念:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

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

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

f5547f7e4fcc8ddb5c71fb69de4f32b2.png

UML图:

53bb446ceff67e03da605baa7f21d771.png

示例:

水的状态

/**

* 水的状态

* */

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()+"摄氏度,气态;蒸汽,可以汗蒸了!");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值