策略模式

Posted by Max on November 23, 2014

定义

《大话designpattern》:

策略模式:它定义定义了算法家族,分别封装起来,让它们之间可以可以相互替换,此模式让 算法的变化,不会影响到使用算法的客户。[DP]

UML类图

策略模式结构图

该模式中包含的角色及其职责如下:

  • 抽象策略类(Strategy)

    定义所有支持的算法的公共接口。

  • 具体策略类(ConcreteStrategy)

    封装了具体的算法或行为,继承与Strategy。

  • 上下文(context)

    用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用。

特点

策略模式是一种定义一系列算法的方法,所有算法以不同的实现完成相同的工作,以相同的调用方式 减少算法类与使用算法类之间的耦合。

当不同的行为堆砌在一个类中时,需要使用条件语句选择合适的行为。若将这些行为封装在一个个独立的 Strategy类中,则可以在使用这些行为的类中消除条件语句。

策略模式被定义为封装算法,但在实践中,可以用来封装任何类型的变化与规则。只要在分析过程中听到 需要在不同时间应用不同的业务规则,就可以考虑用策略模式来来处理这种变化。

参考

  1. 策略模式-百度百科

  2. designpattern ( 十八 ) 策略模式Strategy(对象行为型)

  3. designpattern随笔系列:鸭子-策略模式(Strategy)