在策略模式(strategy pattern)中,乙個類的行為或其演算法可以在執行時更改。這種型別的設計模式屬於行為型模式。
在策略模式中,我們建立表示各種策略的物件和乙個行為隨著策略物件改變而改變的 context 物件。策略物件改變 context 物件的執行演算法
上圖 三個類都實現了介面定義的方法,strategyimple是具體執行方法的類,兩外兩個是定義的策略,如果再有其他策略,可以繼續增加介面的實現類,進行擴充套件,從而是 cacluate()方法更加豐富,滿足不同的要求。
介面
/**
* 定義抽象策略角色
* 類似 comparator介面
*/public inte***ce strategy
具體策略實現類public class strategyimple implements strategy
@override
public int caculate(int num1, int num2)
}
定義加法策略public class addstrategy implements strategy
}
定義減法策略public class reducestrategy implements strategy
}
測試public class test
}
6有種感覺和裝飾這挺像的,都是傳入實現了介面的物件,不同的是,策略模式改變的是方法的內容,而裝飾這模式沒有改變被裝飾的物件方法,只是額外增加了一些東西。2
策略模式對於去除優化**種很多的 if 條件挺有用,有空可以試試。
設計模式(三) 策略模式
策略模式的結構圖 引用 模版方法模式,對照類圖可以看到,策略模式與模版方法模式的區別僅僅是多了乙個單獨的封裝類context,它與模版方法模式的區別在於 在模版方法模式中,呼叫演算法的主體在抽象的父類中,而在策略模式中,呼叫演算法的主體則是封裝到了封裝類context中,抽象策略strategy一般...
設計模式筆記(三) 策略模式
策略模式 定義的演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義一種演算法的方法,從概念上看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有演算法,減少了各種演算法類與使用演算法類之間的耦合。優點 第...
設計模式三 strategy策略模式
策略模式定義了一系列演算法,並將每個演算法封裝起來,使他們可以相互替換,且演算法的變化不會影響到使用演算法的客戶。1 需要設計乙個介面,為一系列實現類提供統一的方法,多個實現類實現該介面,2 2.1 設計另乙個介面,專門封裝演算法 2.2 設計乙個抽象類 可有可無,屬於輔助類 提供輔助函式。參考 一...