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

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

但实际真能解决吗?

先说状态模式吧



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

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

再说状态模式





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





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

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


猜你喜欢

转载自blognojava.iteye.com/blog/1132052
今日推荐