定义
《大话designpattern》:
策略模式:它定义定义了算法家族,分别封装起来,让它们之间可以可以相互替换,此模式让 算法的变化,不会影响到使用算法的客户。[DP]
UML类图
该模式中包含的角色及其职责如下:
-
抽象策略类(Strategy)
定义所有支持的算法的公共接口。
-
具体策略类(ConcreteStrategy)
封装了具体的算法或行为,继承与Strategy。
-
上下文(context)
用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用。
特点
策略模式是一种定义一系列算法的方法,所有算法以不同的实现完成相同的工作,以相同的调用方式 减少算法类与使用算法类之间的耦合。
当不同的行为堆砌在一个类中时,需要使用条件语句选择合适的行为。若将这些行为封装在一个个独立的 Strategy类中,则可以在使用这些行为的类中消除条件语句。
策略模式被定义为封装算法,但在实践中,可以用来封装任何类型的变化与规则。只要在分析过程中听到 需要在不同时间应用不同的业务规则,就可以考虑用策略模式来来处理这种变化。