设计模式-策略模式

策略模式

策略模式

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

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 语句
  • 复用性好
相关推荐
Asort3 小时前
JavaScript设计模式(十四)——命令模式:解耦请求发送者与接收者
前端·javascript·设计模式
秉承初心4 小时前
Java 23种设计模式的详细解析
java·设计模式
骁的小小站4 小时前
Learn C the Hardway学习笔记和拓展知识(一)
c语言·开发语言·c++·经验分享·笔记·学习·bash
TsengOnce5 小时前
设计模式(解释器模式(Interpreter Pattern)结构|原理|优缺点|场景|示例
设计模式·解释器模式
猫头虎7 小时前
OpenAI发布构建AI智能体的实践指南:实用框架、设计模式与最佳实践解析
人工智能·设计模式·开源·aigc·交互·pip·ai-native
昨天的猫7 小时前
项目中原来策略模式这么玩才有意思😁😁😁
设计模式
Mr_WangAndy7 小时前
C++设计模式_行为型模式_迭代器模式Iterator
c++·设计模式·迭代器模式
白衣鸽子7 小时前
【基础数据篇】数据遍历大师:Iterator模式
后端·设计模式
muxin-始终如一7 小时前
系统重构过程以及具体方法
设计模式·重构
Mr_WangAndy20 小时前
C++设计模式_行为型模式_责任链模式Chain of Responsibility
c++·设计模式·责任链模式·行为型模式