设计模式-策略模式《十九》
2019-01-06 本文已影响73人
liyoucheng2014
何为策略模式
定义:定义一系列算法,把他们一个个封装起来,并且使他们可相互替换。
定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户
策略模式中的一个关键角色是策略类,它为所有支持的或相关的算法声明了一个共同接口。另外,还有使用策略接口来实现相关算法的具体策略类。场景(context)类的对象配置有一个具体策略对象的实例,场景对象使用策略接口调用由具体策略类定义的算法。静态关系图如下
CustomTextField及其相关InputValidator策略之间静态关系的类图何时使用策略模式
1、 一个类在其操作中使用多个条件语句来定义许多行为。我们可以把相关的分支条件移到他们自己的策略类中。
2、需要算法的各种变体。
3、需要避免把复杂的、与算法相关的数据结构暴露给客户端。
使用步骤
- 抽象一个策略
- 继承抽象策略,并重载父类方法
- 使用类声明策略属性、并调用策略方法
优缺点
- 优点:if-else精简成一行代码,代码可维护性高
- 缺点:使用前就确定策略模式,不能动态改变