您的位置:首页 > Web前端 > JavaScript

javascript策略模式

2016-05-24 14:45 351 查看
在程序设计中,经常遇到一个功能有很多方案可以选择,一个过程下有很多条件分支。

最初的实现方案是对每个情况用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息