策略模式
策略模式
定义
- 策略模式(Strategy Pattern)
- 定义了算法族,分别封装起来,让它们之间可以互相替换
- 此模式让算法的变化独立于使用算法的客户
核心组成
- 策略接口(Strategy Interface)
- 定义了所有支持的算法的公共接口
- 具体策略类(Concrete Strategies)
- 实现策略接口,提供具体的算法实现
- 上下文(Context)
- 维护一个对策略对象的引用
- 可以定义一个接口来让策略对象访问它的数据
应用场景
- 当有多种类似的行为或算法,且需要灵活地在它们之间切换时
- 当存在多个条件分支,每个分支执行不同的行为时,使用策略模式可以避免使用多重条件选择语句
- 当一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现时
优点
- 策略模式提供了管理相关的算法族的办法
- 可以避免使用多重条件转移语句
- 策略模式提高了算法的保密性和安全性
缺点
- 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
- 会产生很多的策略类
实例
- 工时单,填报的单位是天或小时,会影响到工时明细列表中的工价计算、单位的显示、最大值(8小时或5天)