State与Strategy

State模式定义:允许对象在内部状态改变时改变自己的行为,就像改变了对象的类。

Strategy模式定义:定义了算法簇,分别封装起来,让他们之间可以互相替换,此模式让算法的的变化独立于使用算法的客户。

 

这2个模式可以说从命名上就能看出其专注的问题点!

 

状态模式专注于对象的状态,对状态进行了行为上的封装,因此,不同的状态,所执行的操作时完全不同的,当有新的状态出现时,我们不得不增加类来满足业务的需要,而状态的改变对操作者是透明的,操作者不需要关注当前状态会执行什么,因为状态告诉操作者:我是足够聪明的,相信我!

 

策略模式不会去关注对象的状态,而主要考虑我需要什么样的操作,这些操作有哪些的共通的,那么我就把这些共通的行为进行对象化,产生行为类,自己去管理这些行为类,需要做什么样的事情,就持有该行为类,执行该类的共通方法。

 

状态模式由状态类管理状态的改变,而策略模式由用户来决定使用什么策略!

 

个人浅显的观点,不足的地方,请大家多指教,一起讨论

猜你喜欢

转载自wikimore.iteye.com/blog/1065561