js设计模式——策略模式

定义:
定义一系列算法,把他们各自封装成策略类,然后把不变的部分和变化的部分分离开来,其中包括策略类和环境类(Context)。

使用场景:
缓动动画、表单验证等

//策略类
var strategies = {
    'S': function(salary){
        return salary * 4;
    },
    'A': function(salary){
        return salary * 3;
    },
    'B': function(salary){
        return salary * 2;
    }
}

//环境类
var calculateBouns = function( level,strategy){
    return strategies[level](strategy)
}

console.log(calculateBouns('S',4000));
console.log(calculateBouns('B',2000))

优缺点

优点:

1、利用组合、委托和多态技术和思想,可以避免多重条件选择语句;

2、将算法封装在独立的策略类里,使得易于切换,易于理解,易于扩展;

3、策略模式可以复用在系统的其他地方,从而避免重复的复制粘贴工作;

4、策略模式利用组合和委托让环境类拥有执行算法的能力,从而替代继承。

缺点:

1、程序中会增加许多策略类或者策略对象;

2、使用策略类必须要对所有的策略类算法了解清楚,否则不知道怎么选择。

你可能感兴趣的:(js,技术积累)