策略模式

2017-07-26  本文已影响10人  sdcV

定义:定义一些列算法,把它们各自封装成策略类,算法被封装到策略类内部的方法中。在客户对Context发起请求时,Context总是把这些请求委托给这些策略对象中间的某一个进行计算。
生活中的策略模式例子:比如你想出去旅行,在选择出行方式时:你有以下可以考虑:

  1. 如果没有时间,但是不在乎钱,你可以选择坐飞机。

  2. 如果没钱,可以选择坐火车或者大巴

  3. 如果再穷,可以选择骑自行车。
    这就是策略问题
    下面用代码实现模拟公司按照绩效给员工发奖金的场景
    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
上一篇下一篇

猜你喜欢

热点阅读