定义:允许对象在内部状态改变是改变它的行为(将状态封装为类,并将动作委托到待变当前状态的对象),对象看起来好像修改了它的类。
类图:

状态模式的类图与策略模式一样,只是各自的意图不同。
状态模式,将一群行为封装在状态对象中,context的行为随时委托给那些状态对象中的一个。当前状态在所有状态对象中改变,从而反映context的内部状态,context的行为也跟着改变。调用context对象的客户对状态对象是不可见的。
状态模式是防止在context中出现许多条件判断语句,而是将行为封装到状态对象,context改变状态,进而改变context的行为(context会将行为委托给当前状态对象)。
策略模式,调用context的客户主动指定context所需组合的策略对象是哪个。
使用状态模式通常会产生大量类,但是封装变化,易于扩展,只需要继承state接口,然后实现对应的行为即可。
本文介绍了状态模式的概念及其在软件设计中的应用。状态模式通过将对象的行为与其内部状态关联起来,允许对象根据状态的变化来改变其行为,从而避免了在类中使用大量的条件语句。文章还对比了状态模式与策略模式的不同之处。
1465

被折叠的 条评论
为什么被折叠?



