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