策略模式解决if-else过多

将判断及处理定义为一个策略对象,key为判断条件,值为函数,可带参。

var strategy = {
'a':function(count){
return count*1;
},
'b':function(count){
return count*2;
},
'c':function(count){
return count*3;
}
}
//定义一个函数接收判断条件及参数
var calculate = function(level,count){
return strategy[level](count);//找到对应条件的函数并执行
}

console.log(calculate('a',1));//1
console.log(calculate('b',1));//2

这样写的好处是,代码中减少了大量if/else语句;可扩展性好;
写if/else语句会基于判断一个一个对比,倘若判断多,且匹配条件刚好又处于靠后位置,势必会影响效率。
至于采用对象查找key值,有人试验查找一个具有300000个字符串的键值对,查找速率小于1ms。
原文地址:https://www.cnblogs.com/xinyouhunran/p/13346143.html