策略是為達到某一目的而採取的手段或方法,策略模式的本質是目標與手段的分離,手段不同而最終達成的目標一致。客戶只關心目標而不在意具體的實現方法,實現方法要根據具體的環境因素而變化。
策略模式參與者:
◊ strategy 策略
° 定義所支援的演算法的公共介面。context使用這個介面來呼叫某個concretestrategy定義的演算法。
◊ concretestrategy 具體策略
° 實現strategy介面中的具體演算法。
◊ context 上下文
° 通過乙個concretestrategy物件來對其進行配置;
° 維護乙個對strategy物件的引用;
° 可定義乙個介面來讓strategy訪問它的資料。
執行結果:
◊ 如果在乙個系統裡面有許多類,它們之間的區別僅在於它們的行為,那麼使用策略模式可以動態地讓乙個物件在許多行為中選擇一種行為。
◊ 乙個系統需要動態地在幾種演算法中選擇一種。這些具體演算法類均有統一的介面,由於多型性原則,客戶端可以選擇使用任何乙個具體演算法類,並只持有乙個資料型別是抽象演算法類的物件。
◊ 乙個系統的演算法使用的資料不可以讓客戶端知道。策略模式可以避免讓客戶端涉及到不必要接觸到的複雜的和只與演算法有關的資料。
◊ 如果乙個物件有很多的行為,如果不用恰當的模式,這些行為就只好使用多重的條件選擇語句來實現。此時,使用策略模式,把這些行為轉移到相應的具體策略類裡面,可以避免使用難以維護的多重條件選擇語句。
(1)支援開閉原則(ocp)。
(2)策略模式使用繼承模式抽取公共**到基類,避免重複**。
(3)策略模式避免使用多重條件判斷語句(if/else、switch等)。
(1)客戶端(client)必須知道所有的策略類,並自行決定使用哪乙個策略類。策略模式只適用於客戶端知道所有的演算法或行為的情況。
(2)策略模式造成很多的策略類。
設計模式之Decorator與Strategy
最近在學習design pattern.在看完decorator與strategy之後,產生了乙個疑問,兩者之間的區別和聯絡是什麼?decorator與strategy都實現了多型。而其最重要的一點是decorator的多型是基於具體物件。比如我們定義乙個 人 這樣的類,人剛生下來時,除了吃喝拉撒什...
設計模式筆記 策略模式
常用設計模式有23中,分為 建立型模式 主要用於建立物件 1 單例模式 2 工廠方法模式 3 抽象工廠模式 4 建造者模式 5 原型模式 行為型模式 主要用於描述物件或類是怎樣互動和怎樣分配職責 1 模板方法模式 2 中介者模式 3 命令模式 4 責任鏈模式 5 策略模式 6 迭代器模式 7 觀察者...
設計模式筆記 策略模式
策略模式 strategy 定義了一組演算法,將每個演算法都封裝起來,並且使它們之間可以互換,在使用時,根據傳入的型別不同,隨著策略物件改變而改變的 context 物件。策略物件改變 context 物件的執行演算法 策略模式和簡單工廠模式的區別 工廠是建立型模式,它的作用就是建立物件,簡單工廠模...