javascript策略模式

在程序设计中,经常遇到一个功能有很多方案可以选择,一个过程下有很多条件分支。

最初的实现方案是对每个情况用if-els判断,如下:

var calculateBonuw=function(level,salary){
           
           if(level=='s'){
              return salary*4; 
           }else if(level=='a'){
              return salary*5; 
           }else if(level=='b'){
              return salary*6; 
           }
           
       }

           calculateBonuw('s',2000);  //8000
           calculateBonuw('a',1000);  //5000
          

上面的代码看起来很简单,但是问题也很明显,如果增加level=‘c’的情况,就需要在if-else语句中再加一组代码加以判断,这违背了开放-封闭原则。

策略模式的定义是:定义一系列的算法,把他们一个个的封装起来,并且是他们可以相互替换。

策略模式的目的就是把算法的使用和算法的实现分离开来。

var strategies={
           "s":function(salary){
               return salary*4;
           },
           "a":function(salary){
               return salary*5;
           },
           "b":function(salary){
               return salary*6;
           }
       }
       
       var caluateBonus = function(level,salary){
           return strategies[level](salary);
       }
       
       caluateBonus("s",2000); //8000
       caluateBonus("a",1000); //5000




















猜你喜欢

转载自blog.csdn.net/franktaoge/article/details/51490134