Skip to content

JavaScript 版本的策略模式

在 JavaScript 语言中,函数也是对象,所以更简单和直接的做法是把 strategy 直接定义为函 数:

javascript
const strategies = {
  "S" (salary) {
    return salary * 4
  },
  "A" (salary) {
    return salary * 3
  },
  "B" (salary) {
    return salary * 2
  }
};

同样,Context 也没有必要必须用 Bonus 类来表示,我们依然用 calculateBonus 函数充当 Context 来接受用户的请求。

javascript
const calculateBonus = function(level, salary){
  return strategies[level](salary)
};
console.log(calculateBonus('S', 20000 )) // 输出:80000
console.log(calculateBonus('A', 10000 )) // 输出:30000