设计模式真解——状态模式篇

状态模式

典型应用:游戏服务端玩家状态(在线,离线,卸载中,加载中,无状态)

模式描述:让对象在内部状态改变的时候改变其行为,对外而言,状态改变时就像是修改了类一样

将一个状态类组合进拥有状态的类里,随着外在条件的改变而切换这个状态类成为另一个状态类,从而给外界表现为“仿佛是换了一个类一样”,实际上只是组合的状态类不同而已

现实案例:假设一个人有五个人格,游戏狂,运动狂,工作狂,睡觉狂,这五个人格就是五种状态,随着一天的时间变化会切换成不同的人格,早上醒来的时候,自动从睡觉狂的人格切换到运动狂状态,上班时间到了之后切换刀工作狂状态,下班之后切换到游戏狂状态,晚上十二点了就切成睡觉狂状态,当身体扛不住了也会自动切成睡觉狂状态,当休息日到来会自动在游戏狂和睡觉狂的状态中切换,这就是一种状态的转换

再假设这个人上网的时候,先看了一篇感人的微博,点了个赞,进入感动模式,然后又看了篇贴吧,切换成愤青模式,刷了会儿知乎,进入装逼模式,打开CSDN,进入求学模式,然后打开天涯论坛,变成喷子模式,但是对于互联网而言,并不知道他的状态切换,只是被动接受他传出来的结果,但是实际上在不同模式下,这个人的思考方式,人生观,价值观,世界观都有变化,准确地说是这个人脑子里装载了不同的情绪类,一个情绪类一个状态

In My Opinion:与策略模式不同的是,状态模式的状态切换都是在内部定义好的,虽然它人格(状态)在随着条件切换,但是对于外人而言,这个人并没有变化,他还是他,只是在做不同的事情而已,即状态模式的内部改变对外是透明的,而策略模式对外则是手动切换

可以将状态模式看成是一个自动版的策略模式,状态模式是自动档的汽车,而策略模式是手动挡

猜你喜欢

转载自blog.csdn.net/weixin_39633215/article/details/80138916