[设计模式]策略模式

策略模式的类图和状态模式是一样的,但两个模式的区别在于他们的“意图”

以策略模式而言,客户通常主动制定Context所要组合的策略对象是哪一个。现在,固然策略模式让我们更有弹性,能够在运行时

改变策略,但对于某个context对象来说,通常都只有一个最适当的策略对象。

一般来说,我们把策略模式想成是除了继承之外的一种弹性方案。如果你使用继承定义了一个类的行为,

你将被这个行为困住,甚至要修改它都很难。有了策略模式,你可以通过组合不同的对象来改变行为。

 

而状态模式,通过将一群行为封装在状态对象中,context的行为随时可委托到那些状态对象中的一个。随着时间的流逝,当前状态在

状态对象集合中游走改变,以反映context内部的状态,因此,context的行为也会跟着改变。但是context的客户对于状态对象了解不多

甚至根本浑然不觉。

我们把状态模式想成是不用再context中放置许多条件判断的替代方案。通过将行为包装进状态对象中,你可以通过context内简单地改变

状态对象来改变context的行为。

posted @ 2013-12-14 21:27  feiling  阅读(175)  评论(0编辑  收藏  举报