設計模式之策略模式

策略模式在我的理解裏就是  提供解決一種問題的不同方法;

在平時我們解決問題的時候,通常把方法寫在一個類裏面或者是當前類裏面,比如說排序,快排寫個方法,基數排序寫個方法,堆排序寫個方法,在類裏調用或者是某個業務邏輯複雜,每一個條件都需要一系列的if..else 或者是switch..case等判斷語句來選擇具體的業務邏輯的時候,就是使用策略模式的時候。

策略模式的定義
     策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使他們還可以相互替換,策略模式讓算法獨立使用於它的客戶而獨立變化

使用場景:
     針對同一類型問題的多種處理方式,僅僅是具體行爲有差別時;
     需要安全地封裝多種同一類型的操作時
     出現同一抽象類有多個子類,而又需要使用if-else或者switch-case來選擇具體子類

既然是策略,咱們就以一種比較形式化的方式來說,

比如說我要領兵打仗,但是我面對對面的人要用什麼戰法呢,三十六計那麼多,咱們把每一個戰略抽象出來,有一個共同通的方法爲打,
然後讓每一個計謀去實   繼承這個抽象類,重寫他的具體實現的戰略方法,然後想用什麼就直接可以用,添加的話再去寫個類添加就行,這樣的話就可以避免每次改動直接修改某個類裏面的代碼,可獨立於使用他的客戶而變化



上圖中
     context是上下文,也就是進行操作的類,
     Stargety 策略的抽象
     ConcreteStragety A B C具體的粗略策略實現


安卓系統中的實現
       時間差值器
     
     



發佈了58 篇原創文章 · 獲贊 20 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章