设计模式-策略模式

策略模式

策略模式

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

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 语句
  • 复用性好
相关推荐
啦啦啦啦啦zzzz17 小时前
设计模式:单例模式和工厂模式
c++·单例模式·设计模式·工厂模式
小白说大模型20 小时前
Python 工程化设计模式:AI 项目中的异步流水线与策略模式实战
人工智能·python·设计模式
AIex-YH20 小时前
菌种工艺四讲(三):育种工具不是“越新越好“,是“越匹配越好“
制造·策略模式
起司喵喵20 小时前
Flutter-MacOS桌面OS系统|flutter.+window_manager客户端OS模板
flutter·macos·策略模式
啊真真真21 小时前
macOS下libnfc ..写卡失败问题及解决方案
macos·策略模式
choumin1 天前
行为型模式——中介者模式
c++·设计模式·中介者模式·行为型模式
geovindu2 天前
Java: Chain of Responsibility Pattern
java·开发语言·后端·设计模式·责任链模式·行为模式
workflower2 天前
装备企业的 AI 路线图
人工智能·深度学习·机器学习·设计模式·机器人
geovindu3 天前
CSharp:Chain of Responsibility Pattern
开发语言·后端·设计模式·c#·.net·责任链模式·行为模式
梓仁沐白3 天前
【Agent 设计模式】路由模式(Routing)
大数据·设计模式