設計相關5--策略模式

定義

  • 實現某個功能,有多種策略方法。運行時,只能選擇其中一種實現功能。
  • 將這些策略方法及相應生效條件抽象成一個接口或抽象類,每個策略方法封裝成一個具體的實現類。
  • 策略實現類之間相互獨立,可以相互替換。

組成及類圖

組成:一個策略抽象類(抽象方法有策略方法、策略生效條件)、多個策略實現類、一個擁有策略集合的客戶端。
類圖:稍後上傳。
重點說明:無論是策略模式還是前面總結的工廠模式,都會有一個選擇的過程,根據條件值或者條件邏輯選擇使用哪個策略或者使用哪個工廠創建實例。如果不把生效條件提到接口裏,日後新增策略或工廠,那麼選擇的邏輯也要新增一種選擇情況,這其實還是違反了開閉原則的。所以將生效條件也同策略方法一起提到接口裏,把策略集合丟給客戶端,客戶端遍歷策略集合,直到遇到條件符合的策略。

場景舉例

小明要去蘇州旅遊,有多種選擇:坐飛機、坐火車、做輪船、騎自行車(SB行爲)。

模式總結

優點:將功能的實現和客戶端分離,鬆耦合。
缺點:在策略的擴展上,當策略較多時,開發得提前瞭解現有的這些策略,再去擴展,避免重複。客戶端使用時,也需要先了解這些策略,再去決定使用哪一個,避免選擇錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章