靈活的策略模式,讓不同策略間自由切換成為可能!

2021-10-02 17:16:17 字數 1472 閱讀 8634

策略模式是一種比較簡單的模式,也叫做政策模式,他的定義是:定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。

策略模式使用的就是物件導向的繼承多型機制,非常容易理解和掌握,我們再來看看策略模式的三個角色:

(1)context封裝角色

它也叫做上下文角色,起承上啟下封裝作用,遮蔽高層模組對策略、演算法的直接訪問,封裝可能存在的變化。

(2)strategy抽象策略角色

策略、演算法家族的抽象,通常為介面,定義每個策略或演算法必須具有的方法和屬性,

(3)concretestrategy具體策略角色

實現抽象策略中的操作,該類含有具體的演算法。

抽象策略角色

public inte***ce strategy
具體策略角色

public class concretestrategy1 implements strategy 

}public class concretestrategy2 implements strategy

}

封裝角色

public class context 

public void doanything()

}

高層模組

public class client 

}

策略模式的優點:策略模式的缺點:每乙個策略類都是乙個類,復用的可能性很小,類數量增多。

上層模組必須知道有哪些策略,然後才能決定使用哪乙個策略,這與迪公尺特法則是相違背的。

策略模式的使用場景:

策略列舉定義:

public enum calculator 

},//減法運算

sub("-")

};//宣告乙個抽象函式

public abstract int exec(int a, int b);

}

策略模式是乙個非常優秀和方便的模式,但是它受策略列舉型別的限制,每個列舉項都是public static final的,擴充套件性受到一定的約束。

策略模式的擴充套件 策略列舉

各位,我給大家出個小學的題目 輸入3個引數,進行加減法運算,引數中兩個是int型的,剩下的乙個引數是string型的,只有 兩個符號可以選擇,不要考慮什麼複雜的校驗,我們做的是白箱測試,輸入的就是標準的int型別和合規的string型別,各位大俠,想想看,怎麼做,簡單得很!有非常多的實現方式,我今天...

11 3 1 不同的計算策略

11.3.1 不同的計算策略 haskell 是一種純函式式語言,有乙個重要的方面,即,不允許任何 有專門的技術在螢幕上輸出,或處理檔案系統,但對於程式設計師來說,它是以一種看起來不像有 的方式來實現。在這樣的語言中,調整計算排序表示式的順序是可能的 在haskell 中,直到需要結果,才計算函式 ...

策略模式的思考

大蝦們見笑了 這是小弟第一次寫這種文章 多多指點批評 在head first書中,作者用鴨子的例子來說明策略模式 起初,設計的模型是 有個基類duck,在基類定了了乙個變數 description,用來代表鴨子的外觀描述,還定義了乙個方法fly 它的子類mallard 野鴨 sarcelle 綠翅鴨...