if else 優化之策略模式

if else 優化之策略模式

if else 太多,嵌套太深,已然成爲我們搬磚路上經常遇到的問題。最近在項目上使用策略模式,有助於優化嵌套的代碼,使結構更加清晰。

策略模型

什麼是策略模式?

定義:通過定義了一系列的算法,並將每一個算法封裝起來,使每個算法可以相互替代,使算法本身和使用算法的客戶端分割開來,相互獨立。

什麼意思,實際上就是把 if 分支用函數封裝成一個個代碼塊,對方法行爲進行抽象,而不關注每個代碼塊的細節,這就可以算是一個簡單的策略模式。

例子

根據請求返回碼做出不同操作

//if else版
if(res){
	if(res.returnCode == '0'){
		do something 0
	}else if(res.returnCode == '001'){
		do something 001
	}else if(res.returnCode == '010'){
		do something 010
	}else if(res.returnCode == '100'){
		do something 010
	}else{
		do something else2
	}
}else{
	do something else1
}

如果分支越來越多,代碼會很難看並且邏輯也不清晰

//策略模式
if(!res){
	do something else1
	return true;
}

var action = {
	'0': 	function(){ do something 0 },
	'001': 	function(){ do something 001 },
	'010': 	function(){ do something 010 },
	'100': 	function(){ do something 100 }
};

action[res.returnCode] ? action[res.returnCode]() : (do something else2);

先分層,把類似於判斷空這樣的代碼分離出來;然後把所有行爲抽象出來變成一個個代碼塊,代碼結構一目瞭然,後續修改也只需要修改 action 對象即可。

總結

沒有過多的展開講策略模型,設計模式本質上都是爲了解決某個場景,所以這裏只是引入一個核心思想。通過對方法行爲進行抽象的思想,可以減少 if else 的嵌套,易於擴展。每個人根據不同的場景,代碼的顆粒度,可以有選擇地使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章