Appearance
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