设计模式-策略模式

策略模式

策略模式

定义: 根据不同参数可以命中不同的策略

JavaScript 中的策略模式

观察如下获取年终奖的 demo, 根据不同的参数(level)获得不同策略方法(规则), 这是策略模式在 JS 比较经典的运用之一。

js 复制代码
const strategy = {
  'S': function(salary) {
    return salary * 4
  },
  'A': function(salary) {
    return salary * 3
  },
  'B': function(salary) {
    return salary * 2
  }
}

const calculateBonus = function(level, salary) {
  return strategy[level](salary)
}

calculateBonus('A', 10000) // 30000

在函数是一等公民的 JS 中, 策略模式的使用常常隐藏在高阶函数中, 稍微变换下上述 demo 的形式如下, 可以发现我们平时已经在使用它了, 恭喜我们又掌握了一种设计模式。

js 复制代码
const S = function(salary) {
  return salary * 4
}

const A = function(salary) {
  return salary * 3
}

const B = function(salary) {
  return salary * 2
}

const calculateBonus = function(func, salary) {
  return func(salary)
}

calculateBonus(A, 10000) // 30000

优点

  • 能减少大量的 if 语句
  • 复用性好
相关推荐
yangpipi-12 小时前
2. 设计模式之结构型模式
设计模式
进击的小头16 小时前
设计模式组合应用:嵌入式通信协议栈
c语言·设计模式·策略模式
致Great16 小时前
智能体的设计模式探讨
设计模式
超级大福宝18 小时前
PowerShell 实现类似 Bash 的补全行为
bash·powershell
BD_Marathon18 小时前
设计模式——单一职责原则
设计模式·单一职责原则
stevenzqzq19 小时前
Slot API 设计模式
设计模式·compose
reddingtons19 小时前
Cascadeur:动态总是“飘”?“物理外挂流” 3分钟直出重力感 2D 立绘
游戏·设计模式·aigc·设计师·游戏策划·游戏美术·cascadeur
Wyy_9527*19 小时前
行为型设计模式——策略模式
设计模式·策略模式
kogorou0105-bit19 小时前
前端设计模式:发布订阅与依赖倒置的解耦之道
前端·设计模式·面试·状态模式
BD_Marathon19 小时前
设计模式——接口隔离原则
java·设计模式·接口隔离原则