策略模式 Strategy

发布时间 2023-12-21 08:54:44作者: 梅丹隆

一、定义

  • 定义了算法家族,分别封装起来,让它们之间可以相互替换
  • 此模式让算法的变化不会影响到使用算法的用户

二、适用场景

  • 系统有很多类,而它们的区别仅仅在于行为不同
  • 一个系统需要动态的在几种算法中选择一种

三、优缺点

1、优点

  1. 符合开闭原则 OpenClose
  2. 避免使用多重条件转移语句switch
  3. 提高算法的保密性和安全性

2、缺点

  1. 客户端必须知道所有的策略类,并自行决定使用哪一个策略类
  2. 会产生很多策略类

四、代码实现

https://github.com/Meidanlong/all-in-one/tree/master/design/src/main/java/com/mdl/design/pattern/behavioral/strategy

image.png