設計模式之策略模式
策略模式在我的理解裏就是 提供解決一種問題的不同方法;
在平時我們解決問題的時候,通常把方法寫在一個類裏面或者是當前類裏面,比如說排序,快排寫個方法,基數排序寫個方法,堆排序寫個方法,在類裏調用或者是某個業務邏輯複雜,每一個條件都需要一系列的if..else 或者是switch..case等判斷語句來選擇具體的業務邏輯的時候,就是使用策略模式的時候。
策略模式的定義
策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使他們還可以相互替換,策略模式讓算法獨立使用於它的客戶而獨立變化
使用場景:
針對同一類型問題的多種處理方式,僅僅是具體行爲有差別時;
需要安全地封裝多種同一類型的操作時
出現同一抽象類有多個子類,而又需要使用if-else或者switch-case來選擇具體子類
既然是策略,咱們就以一種比較形式化的方式來說,
比如說我要領兵打仗,但是我面對對面的人要用什麼戰法呢,三十六計那麼多,咱們把每一個戰略抽象出來,有一個共同通的方法爲打,
然後讓每一個計謀去實 繼承這個抽象類,重寫他的具體實現的戰略方法,然後想用什麼就直接可以用,添加的話再去寫個類添加就行,這樣的話就可以避免每次改動直接修改某個類裏面的代碼,可獨立於使用他的客戶而變化
上圖中
context是上下文,也就是進行操作的類,
Stargety 策略的抽象
ConcreteStragety A B C具體的粗略策略實現
安卓系統中的實現
時間差值器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.