java设计模式---状态模式

java设计模式---状态模式

刚学了状态模式,写下自己的初浅见解。
1、状态模式是Java设计模式中一种行为模式
2、一个对象有多种状态产生多种不同行为
3、对象的状态和行为在未来是会新增的
在2,3的场景下,就需要考虑使用状态模式进行设计。
注意:如果是确定了状态和行为,未来不会变或者变动少,可以不考虑。
例如:一个们,只有开门和关门的状态,动作也是2个,就没必要考虑了。
举一些使用状态模式的场景吧。
一、酒店房间服务
1、每个房间都有一些基本的状态,可入住,已入住,待清洁
2、上1的状态中,房间状态对应的行为和转换,用if表达如下;
if(state == '可入住'){
system.out.print("当前房间可入住,可以做入住动作变成已入住状态,不可以做其他动作");
if(operate == '入住动作'){
system.out.print("当前房间变成已入住状态");
state = '已入住';
}
}else if(state == '已入住'){
system.out.print("当前房间已入住,可以做退房动作变成可入住状态,不可以做其他动作");
if(operate == '退房动作'){
system.out.print("当前房间变成已退房状态或者待清洁状态");
state = '已退房'||'待清洁';
}
}
}else if(state == '待清洁'){
system.out.print("当前房间待清洁,可以做清洁动作变成已入住,不可以做其他动作");
if(operate == '清洁动作'){
system.out.print("当前房间变成可入住状态");
state = '可入住';
}
}
这时发现每一个状态只能做某些动作,而且是绑定的,然后转移到下一个状态。
如果我新增了预约功能,就会产生 已预约,可预约的状态。
还在if上加,是不是代码很长很难看,而且动作也要改(因为已入住和已预约都可以进行退房动作),一不小心可能改错就GG了。
这时候状态模式就来帮助我们了。
我这边就不一一写代码了。
可以参考下面链接的大神
https://www.cnblogs.com/xyzq/p/11090344.html

posted @ 2021-05-08 14:35  墨迹啥呢  阅读(471)  评论(0)    收藏  举报