策略模式

2022-10-27  本文已影响0人  江湖小盛

策略模式:

策略模式是将不同算法进行合理的分类与单独封装,从而让不同算法之间可以互相替换而不会影响到算法的使用者。

函数式

var calculateBonus = function( level, salary ){
    if ( level=== 'S' ){
        return salary * 4;
    }
    if ( level=== 'A' ){
        return salary * 3;
    }
    if ( level=== 'B' ){
        return salary * 2;
    }
};
calculateBonus( 'B', 20000 ); // 输出:40000

策略模式

const computeMode = {
  'S': function(salary) {
    return salary * 4
  },
  'A': function(salary) {
    return salary * 3
  },
  'B': function(salary) {
    return salary * 2
  }
}

const calculateBonus = (level, salary) => {
  return computeMode[level](salary)
}

console.log(calculateBonus('S', 10))

应用

 var tween = {
    linear: function (t, b, c, d) {
      return c * t / d + b;
    },
    easeIn: function (t, b, c, d) {
      return c * (t /= d) * t + b;
    },
    strongEaseIn: function (t, b, c, d) {
      return c * (t /= d) * t * t * t * t + b;
    },
    strongEaseOut: function (t, b, c, d) {
      return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
    },
    sineaseIn: function (t, b, c, d) {
      return c * (t /= d) * t * t + b;
    },
    sineaseOut: function (t, b, c, d) {
      return c * ((t = t / d - 1) * t * t + 1) + b;
    }
  };
上一篇 下一篇

猜你喜欢

热点阅读