N个if+else跟策略模式&&状态模式

[size=large] 坛子里面有很多帖子,提到说怎么解决if else过来带来的判断问题,每次这个一出来,下面回帖都是策略模式 状态模式[/size]

但实际真能解决吗?

[size=large]先说状态模式吧[/size]

[img]http://dl.iteye.com/upload/attachment/524138/400d5ce1-6f01-30ea-bef6-30ec75d33282.gif[/img]

[size=large] 如图,现在有平行的三个策略,但是使用哪个策略是在context里面决定的,那么if else 有替换吗?

只不过if else 里面的东西被封住了,if else 什么的还是在那摆着

再说状态模式[/size]


[img]http://dl.iteye.com/upload/attachment/524149/50754522-f2b8-3289-bbef-97c4b02abe09.jpg[/img]

[size=large] 状态模式关键在context里面有一个保存状态的东西,然后调用request方法,下面的A,B类是不是平行的,不可替换的,他们对应不同状态,那到底什么状态,在context里面还是得判断,然后调用不同状态的handle
if else 在也没解决,只不过把需要判断的内容要你在其它地方判断好,这里直接set对应状态[/size]


个人理解:策略是处理方式有多种,都是平行的,用if else选择执行哪种
状态也有多种,不同状态对应处理不同,但不能替换不是平行的原因是由于在context调用时候,已经set它的状态了

这只是简单运用模式,比如状态模式模拟工作流的时候,一个状态处理,对应状态改变,然后更加状态的改变再调用不同的状态处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值