定 義:定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換
優 點:
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 責任鏈模式
定 義 使多個物件都有機會處理請求,從而避免了請求的傳送者和接受者之間的耦合,將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止 優 點 將請求和處理分開,請求者可以不知道是誰處理的,處理者不用知道請求的全貌,兩者解耦,提高了靈活性,責任鏈模式減低了請求 的傳送端和接收端之間的耦合,...