策略模式
2017-07-26 本文已影响10人
sdcV
定义:定义一些列算法,把它们各自封装成策略类,算法被封装到策略类内部的方法中。在客户对Context发起请求时,Context总是把这些请求委托给这些策略对象中间的某一个进行计算。
生活中的策略模式例子:比如你想出去旅行,在选择出行方式时:你有以下可以考虑:
-
如果没有时间,但是不在乎钱,你可以选择坐飞机。
-
如果没钱,可以选择坐火车或者大巴
-
如果再穷,可以选择骑自行车。
这就是策略问题
下面用代码实现模拟公司按照绩效给员工发奖金的场景
var strategies = { //绩效等级分为 S、A、B
"S": function(salary) {
return salary * 4;
},
"A": function(salary) {
return salary * 3;
},
"B": function(salary) {
return salary * 2;
}
};var calculateBonus = function(level, salary) { //计算最终奖金 return strategies[level](salary); }; console.log(calculateBonus('S', 2000)); //8000 console.log(calculateBonus('A', 1000)); //3000