策略模式屬於『行為型模式』,可以搭配簡單工廠模式一起使用。
與簡單工廠模式不同於,策略模式關注的是行為,簡單工廠關注的是物件。
目的
將達成一種目的中各種不同邏輯(策略),包裝為一個專門的類別。
角色
- 抽象策略:一般為具體策略的父類別
- 具體策略:繼承抽象產品
- 策略介面:根據注入的策略實體,計算結果
- 策略工廠介面:結合簡單工廠,注入策略類型,再根據策略產生實體,計算結果
優點
- 靈活的替換不同的策略
- 拓展容易
- 減少if else
缺點
- 要自行選擇策略
- 會產生很多策略類
UML
實際範例:收銀機
- 抽象策略:CashSuper
1 |
|
- 具體策略:正常收費
1 |
|
- 具體策略:滿300返100
1 |
|
- 具體策略:打8折
1 |
|
- 策略介面:注入折扣的策略實體,由使用者選擇策略
1 |
|
- 策略工廠介面:注入折扣的類型,由工廠判斷產生哪種策略實體
1 |
|