一、定義:
策略模式是對算法的包裝,把使用算法的責(zé)任和算法本身分隔開,委派給不同的對象管理。策略模式通常把一系列的算法包裝
到一系列的策略類里面,作為一個抽象策略類的子類。
簡單來說就是就定義一個策略接口,子類策略去實(shí)現(xiàn)該接口去定義不同的策略。然后定義一個環(huán)境(Context,也就
是需要用到策略的對象)類,以策略接口作為成員變量,根據(jù)環(huán)境來使用具體的策略。
二、優(yōu)點(diǎn):
1、算法可以自由切換。
2、避免使用多重條件判斷。
3、擴(kuò)展性良好。
三、缺點(diǎn):
1、策略類會增多。
2、所有策略類都需要對外暴露。
四、 策略模式實(shí)戰(zhàn)
案例:結(jié)算價格計(jì)算,根據(jù)Vip不同等級進(jìn)行運(yùn)算
1、不同VIP優(yōu)惠價格分析
用戶在購買商品的時候,很多時候會根據(jù)Vip等級打不同折扣,尤其是在線商城中體現(xiàn)的淋漓盡致。我們這里也基于真實(shí)電商案例來實(shí)現(xiàn)VIP等級價格制:
Vip0->普通價格
Vip1->減5元
Vip2->7折
Vip3->5折
2、 代碼實(shí)現(xiàn)
(1)定義策略接口: Strategy

(2)定義Vip0策略: StrategyVipOne

(3)定義Vip1策略: StrategyVipTwo

(4)定義Vip2策略: StrategyVipThree

(5)定義策略工廠: StrategyFactory

(6)等級策略配置:修改application.yml,將如下策略配置進(jìn)去
strategy:
? strategyMap:
? ? ?1: strategyVipOne
? ? ?2: strategyVipTwo
? ? ?3: strategyVipThree
(7)測試

(8)總結(jié):常用VIP客戶打折問題,先定義一個策略接口,用于價格計(jì)算,然后定義幾個類vip0,vip1,vip2,實(shí)現(xiàn)策略接口,控制分別打幾折,然后定義一個策略工廠,根據(jù)不同的vip等級,獲取不同的策略實(shí)例。