定義
策略模式(Strategy Pattern)又叫政策模式(Policy Pattern)纲仍,它是將定義的算法家族阱飘、分別封裝起來驹吮,讓它們之間可以互相替換袋哼,從而讓算法的變化不會影響到使用算法的用戶炫乓。
可以避免多重分支的if...else...和switch語句刚夺。
屬于行為型模式。
適用場景
- 假如系統(tǒng)中有很多類末捣,而他們的區(qū)別僅僅在于他們的行為不同侠姑。
- 一個系統(tǒng)需要動態(tài)地在幾種算法中選擇一種。
- 需要屏蔽算法規(guī)則箩做。
舉例
- JDK中Comparator接口莽红,自己實現(xiàn)compare
- Spring中Resource接口,InstantiationStrategy接口
優(yōu)點
- 策略模式符合開閉原則。
- 避免使用多重條件語句安吁,如if...else...語句醉蚁、switch語句。
- 使用策略模式可以提高算法的保密性和安全性鬼店。
缺點
- 客戶端必須知道所有的策略网棍,并且自行決定使用哪一個策略類。
- 代碼中會產(chǎn)生非常多策略類妇智,增加維護難度滥玷。