2007-08-22

策略(Strategy)模式

关键字: 策略,Strategy,模式

        策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。

        使用策略模式可以把行为和环境分割开来。环境类负责维持和查询行为类,各种算法则在具体策略(ConcreteStrategy)中提供。由于算法和环境独立开来,算法的增减、修改都不会影响环境和客户端。策略模式相当于"可插入式(Pluggable)的算法"。

       这个模式涉及到三个角色:

  • 环境(Context)角色:持有一个Strategy类的引用。
  • 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
  • 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。

        Strategy很容易和Bridge模式相混淆。虽然它们结构很相似,但它们却是为解决不同的问题而设计的。Strategy模式注重于算法的封装,而Bridge模式注重于分离抽象和实现,为一个抽象体系提供不同的实现。Bridge模式与Strategy模式都很好的体现了"Favor composite over inheritance"的观点。

评论
biqing0427 2007-11-19
概念不错,要是有实例就更好了。
发表评论

您还没有登录,请登录后发表评论

James Zhao
搜索本博客
我的相册
229a73b1-3463-4fe5-882f-582753f6ae58-thumb
动力
共 6 张
存档
最新评论