读《大话设计模式——状态模式》有感

状态模式

对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。

个人观点:状态模式可能是应用中比较冷门的一种模式,也有可能是我对面向对象的理解不深入。

主类中以状态对象作为属性(当前的状态)。并且主类实现方法去切换状态,本质是该方法调用主类的属性(状态对象)的切换方法。

当然,状态类需提供方法进行状态间的流转以及当前状态的行为。

状态模式相当于将我们平时一大串的if(x){...}elseif(y){...}elseif(z){...}else{} 语句,变为一个个的状态对象进行控制。

原本的分支语句变成通过类来实现,代码量肯定会剧增。

涉及流转状态的修改的时候(例如往中间插入一个新的状态),需增加新的状态类并修改新状态的前一个状态的 状态流转语句。

好处在于 分支之间 解耦了,e.g. 往A->B->C->D的C和D之间插入C2,无需再关注A->B->C的流转,只需要知道C2的前者是C,后者是D。不关注A->B->C的状态流转后,其行为也就可以直接掠过。越是能从宏观上语义性理解的代码,可读性越强。

写于2021-05-22

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值