抛砖引玉篇--策略模式

策略模式

1.定义:

        定义并封装算法(行为)族,这些算法(行为)之间可以相互替换。

         将算法(行为)的替换独立于使用这些算法的客户。

 

2.分析:

这些算法是可以被替换扩展的,即属于变化部分

@1.如果将其做成抽象方法,然后在派生类中具体实现。

   这样存在的问题如下:

   #1.将算法实现绑定在用户中,如果多个派生使用相同的算法,

        则必须为每个派生类编写相同的算法代码,违背“代码复用”原则。

   #2.当需要替换具体算法时,需要到每个派生类中去修改,增加维护成本。

 

@2.恰当的做法如下:

    #1.将变化部分独立出来,做成接口类,用户拥有这些接口类,就可以使用算法。

         接口类根据需要可以有不同的现实,对用户来说可以不关心算法的更改。

         做到了“对扩展开放,对修改关闭”的原则。

 

  1. 类图:

抛砖引玉篇--策略模式

 

note:

User通过setBehavior()可以*的替换不同的算法(行为)。