定义

策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法

  • 定义了一组算法(业务规则);
  • 封装了每个算法;
  • 这族的算法可互换代替(interchangeable)

    应用场景

  1. 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
  2. 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。
  3. 对客户隐藏具体策略(算法)的实现细节,彼此完全独立

    类图

    策略为一个接口, 该接口定义了功能
    该策略有多种不同形式的实现
    实际调用时, 使用接口来调用功能, 实际实现对该调用者隐藏
  • 通过某种的方式, 来确定接口的实现方式是哪一种
    • 如调用者的某个属性是接口类型的, 需要传入对应的实现类
    • 如根据条件直接生成实现类, 给调用者调用

总体而言, 使用策略模式是为了让一个流程通用化, 适应不同的实际情况
策略模式 - 图1

实际项目应用

健合项目中

  • 多种数据源导入数据的实现
  • 不同库的数据更新
  • 不同库的数据输出

image.png
数据巡检的流程是个很经典的策略模式,采集、分析、通知三个流程都使用的策略模式来应对不同的需求
自定义节点采集方法 .svg