策略模式解决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。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM