需求: 假設有這么一個需求: 一個電商系統,當用戶消費滿1000 金額,可以根據用戶VIP等級,享受打折優惠。根據用戶VIP等級,計算出用戶最終的費用。 普通會員 不打折 白銀會員 優惠50元 黃金會員 8折 白金會員 優惠50元,再打7折 工廠+策略 ...
一:寫自定義注解 二:if else的類型 三:定義所有的類型策略 三個條件實現其接口 四:把策略實現類存放到spring容器中 五:Service寫業務邏輯 六:測試 ...
2020-04-22 19:11 0 1156 推薦指數:
需求: 假設有這么一個需求: 一個電商系統,當用戶消費滿1000 金額,可以根據用戶VIP等級,享受打折優惠。根據用戶VIP等級,計算出用戶最終的費用。 普通會員 不打折 白銀會員 優惠50元 黃金會員 8折 白金會員 優惠50元,再打7折 工廠+策略 ...
策略模式 定義 定義一簇算法類,將每個算法分別封裝起來,讓他們可以互相替換,策略模式可以使算法的變化獨立於使用它們的客戶端 場景 使用策略模式,可以避免冗長的if-else 或 switch分支判斷 實現 策略的定義 策略的定義需要定義一個策略接口和一組實現這個接口的策略類 ...
最近完成了我們公司的公眾號開發,在微信消息路由選擇的時候一開始都是用if-else 來判斷,后面if-else月寫越多顯得十分的亂。在網上簡單查了一下解決方法,果然有不少干貨,感覺最經典最簡潔的還是使用策略模式來重構過多的if-else 選擇。 首先我們新建一個interface ...
前言 也許我們的代碼中遇到過多重判斷if-else語句,但是這樣的代碼可讀性差,並且當擴展時,違反了“開閉原則”。阿里開發規范中提到的解決方法有:衛語句,策略模式,狀態模式。本文講述的是通過策略模式來解決多重判斷if-else語句問題。 github代碼地址:https ...
1.設計模式選型---行為型(策略模式),為消除if-else 實現代碼的松耦合而存在 2.思路:將行為的決策權交給枚舉,有多少種情況就需要定義多少個枚舉類型,匹配時根據枚舉類型中的鍵值進行決策。 3.talk is cheap, show me the code 4.代碼實現: 4.1 ...
將判斷及處理定義為一個策略對象,key為判斷條件,值為函數,可帶參。 ...
一.實戰需求:redis-key過期監聽 二.問題:大量key會造成監聽代碼臃腫 三.解決方案:使用策略模式+工廠模式代替if-else 代碼: 第一部分:redis-springboot配置 第二部分:監聽處理器 第三部分:策略接口 ...
多個if-else代碼: 上面只統計了3個學習時間,如果我們要寫其他的學習時間就需要繼續添加if-else,如果業務很復雜,那么這個代碼看起來會很亂,不方便維護; 下面用策略模式和工廠模式優化該if-else; 1. 定義抽象策略角色(接口) 2. ...