化繁为简的状态模式

最近看了同事写的一块代码,逻辑非常复杂,我们讨论了实现的方式,我建议他改用状态模式, 这样可以省去很多复杂的判断分支

这是用状态模式的做法

不用状态模式的代码大致如此

if(cpuRatio < xxx && memRatio < xxx) {
     state=Normal
} else if(cpuRatio > xxx && memRatio > xxx) {
     state=Busy
}
else if(cpuRatio > xxx && memRatio > xxx) {
     state=Crazy
}

if(state == Crazy) {
     delegateOtherDoSomething()
} else if (state == Busy) {
     complainAndDoSomething()
} else if (state == Normal) {
     doSomething()
} else {
     doSomething();
}

而用状态模式的代码大致如此

newState = currentState.checkState();
newState.doSomething();

当然我省略了 checkState 的逻辑,该做的事其实并没有少多少,但是看起来清楚多了。



本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值