策略模式:
策略模式是将不同算法进行合理的分类与单独封装,从而让不同算法之间可以互相替换而不会影响到算法的使用者。
函数式
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;
}
};