策略模式
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) 收藏 举报
浙公网安备 33010602011771号