前言 當代碼中出現多重if-else語句或者switch語句時。弊端之一:如果這樣的代碼出現在多處,那么一旦出現需求變更,就需要把所有地方的if-else或者switch代碼進行更改,要是遺漏了某一處,那么程序就會出錯。弊端之二:代碼邏輯難以理解。 衛語句 衛語句的使用,並不能改變前言 ...
前言 當代碼中出現多重if else語句或者switch語句時。弊端之一:如果這樣的代碼出現在多處,那么一旦出現需求變更,就需要把所有地方的if else或者switch代碼進行更改,要是遺漏了某一處,那么程序就會出錯。弊端之二:代碼邏輯難以理解,可讀性低。 衛語句 策略模式 使用策略模式可以代替多重if else和switch語句,讓代碼維護變得更加簡單。策略模式UML: .環境 Context ...
2019-01-12 17:57 1 1526 推薦指數:
前言 當代碼中出現多重if-else語句或者switch語句時。弊端之一:如果這樣的代碼出現在多處,那么一旦出現需求變更,就需要把所有地方的if-else或者switch代碼進行更改,要是遺漏了某一處,那么程序就會出錯。弊端之二:代碼邏輯難以理解。 衛語句 衛語句的使用,並不能改變前言 ...
前言 也許我們的代碼中遇到過多重判斷if-else語句,但是這樣的代碼可讀性差,並且當擴展時,違反了“開閉原則”。阿里開發規范中提到的解決方法有:衛語句,策略模式,狀態模式。本文講述的是通過策略模式來解決多重判斷if-else語句問題。 github代碼地址:https ...
最近完成了我們公司的公眾號開發,在微信消息路由選擇的時候一開始都是用if-else 來判斷,后面if-else月寫越多顯得十分的亂。在網上簡單查了一下解決方法,果然有不少干貨,感覺最經典最簡潔的還是使用策略模式來重構過多的if-else 選擇。 首先我們新建一個interface ...
C語言自學之多重if-else語句 Dome : 某游戲對不同等級的積分的玩家賦予不同的榮譽稱號,其對應關系如下: 積分>=10000分為鑽石玩家 積分>=5000並且<10000為白金玩家 積分>=1000並且<5000為青銅玩家 ...
通過上圖可以看出策略模式有以下角色構成: 1、抽象策略(Strategy)角色:抽象策略角色由抽象類或接口來承擔,它給出具體策略角色需要實現的接口; 2、具體策略(ConcreteStrategy)角色:實現封裝了具體的算法或行為; 3、場景(Context)角色 ...
將判斷及處理定義為一個策略對象,key為判斷條件,值為函數,可帶參。 ...
多個if-else代碼: 上面只統計了3個學習時間,如果我們要寫其他的學習時間就需要繼續添加if-else,如果業務很復雜,那么這個代碼看起來會很亂,不方便維護; 下面用策略模式和工廠模式優化該if-else; 1. 定義抽象策略角色(接口) 2. ...
需求: 假設有這么一個需求: 一個電商系統,當用戶消費滿1000 金額,可以根據用戶VIP等級,享受打折優惠。根據用戶VIP等級,計算出用戶最終的費用。 普通會員 不打折 白銀會員 優惠50元 黃金會員 8折 白金會員 優惠50元,再打7折 工廠+策略 ...