設計模式利劍12 策略模式

2021-05-22 13:58:25 字數 559 閱讀 4829

定      義:定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換

優      點:

1、演算法可以自由切換

2、避免使用多重條件判斷

3、擴充套件性好

缺      點:

1、策略類數量多

2、所有的策略類都需要對外暴露

使用場景:

1、多個類只有在演算法或行為上稍有不同的場景

2、演算法需要自由切換的場景

3、需要遮蔽演算法規則的場景

應用案例:

先來看看策略模式的uml圖:

2、strategy抽象策略角色:策略、演算法家族的抽象,通常為藉口,定義每個策略或uanfa必須具有的方法和屬性

先來看乙個歷史故事吧,著名的東吳賠了夫人又折兵的故事,諸葛亮給了趙雲三條妙計藏於錦囊中,用來應對東吳為難劉備之事,這個是乙個典型的策略模式,現在來看一看uml圖:

經過如此設計以後,那孩子們再也不用操心因為學前事務而遲到了,他們都依賴於他們的媽媽了,媽媽就是將一組演算法封裝起來,給孩子們更方便的介面。

設計模式1 2 策略模式 has setter

策略模式 定義乙個演算法族 繼承 實現的同乙個抽象類 介面 同一族的演算法 具體的類 可以相互替換,演算法的改變不影響客戶的使用。有setter的策略模式,可以在例項化後動態指定演算法。主要元素 客戶類 tom 構造方法 定義weapon的具體物件 屬性weapon 持有實現weapon介面的乙個物...

設計模式利劍20 狀態模式

定 義 當乙個物件內在狀態改變時允許其改變行文,這個物件看起來像改變了其類 優 點 1 結構清晰,避免了過多的switch case,if else 2 遵循設計原則,每個狀態都是乙個子類 3 封裝性非常好 缺 點 子類會過多,也就是類膨脹 應用場景 1 行為隨狀態改變而改變的場景 2 條件 分支判...

設計模式利劍10 責任鏈模式

定 義 使多個物件都有機會處理請求,從而避免了請求的傳送者和接受者之間的耦合,將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止 優 點 將請求和處理分開,請求者可以不知道是誰處理的,處理者不用知道請求的全貌,兩者解耦,提高了靈活性,責任鏈模式減低了請求 的傳送端和接收端之間的耦合,...