策略模式

1. 策略模式的定义

    定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化

2. 主要解决问题

    当使用算法的客户和算法之间紧密耦合时,可以使用策略模式解决问题

3. 主要参与对象

    Client 客户端

    Context 上线文

    Strategy 策略抽象接口

    ConcreteStrategy 策略具体实现类

 

    code...

 

4. 策略模式讲解

4.1 策略模式的功能

    策略模式的重心不是如何来实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性

4.2 策略模式和if-else语句

    当存在复杂的if-else时,可以考虑使用策略模式进行分解

4.3 算法的平等性

    策略算法是相同行为的不同实现

4.4 谁来选择具体的策略算法

    4.4.1 由client进行选择

    4.4.2 由context进行选择

4.5 Context和Strategy之间的关系

   4.5.1 Context调用ContreteStrategy

   4.5.2 ContreteStrategy的参数入口为Context

 

策略模式的问题:

从某种程度上讲,策略模式一定程度上违反了DIP原则,抽象不应该依赖于实现细节,如果增加了一种新的策略,就需要改动策略模式的上下文环境类,导致代码的频繁变动

目前策略模式的设计上为了避免DIP原则,增加一个接口Support接口,由该接口控制策略选择标志,通过在子类中判断策略标志,来进行选择对应的策略实现类

 

利用子类实现策略上线问选择

 

posted on 2016-07-26 21:59  zhaojunyang  阅读(129)  评论(0)    收藏  举报

导航