策略模式是一種比較簡單的模式,也叫做政策模式,他的定義是:定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。
策略模式使用的就是物件導向的繼承和多型機制,非常容易理解和掌握,我們再來看看策略模式的三個角色:
(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 綠翅鴨...