strategy策略模式是屬於設計模式中 物件行為型模式,主要是定義一系列的演算法,把這些演算法乙個個封裝成單獨的類.
stratrgy應用比較廣泛,比如, 公司經營業務變化圖, 可能有兩種實現方式,乙個是線條曲線,乙個是框圖(bar),這是兩種演算法,可以使用strategy實現.
這裡以字串替代為例, 有乙個檔案,我們需要讀取後,希望替代其中相應的變數,然後輸出.關於替代其中變數的方法可能有多種方法,這取決於使用者的要求,所以我們要準備幾套變數字元替代方案.
首先,我們建立乙個抽象類reptemprule 定義一些公用變數和方法:
public abstract class reptemprule
protected string newstring="";
public string getnewstring()
public abstract void replace() throws exception;}
在reptemprule中 有乙個抽象方法abstract需要繼承明確,這個replace裡其實是替代的具體方法.
我們現在有兩個字元替代方案,
1.將文字中aaa替代成bbb;
2.將文字中aaa替代成ccc;
對應的類分別是reptempruleone reptempruletwo
public class reptempruleone extends reptemprule
}public class reptempruletwo extends reptemprule}
第二步:我們要建立乙個演算法解決類,用來提供客戶端可以自由選擇演算法。
public class reptemprulesolve
public string getnewcontext(site site,string oldstring)
public void changealgorithm(reptemprule newalgorithm)
呼叫如下:
public class test{
public void testreplace(){
//使用第一套替代方案
reptemprulesolve solver=new reptemprulesolve(new reptemprule******());
solver.getnewcontext(site,context);
//使用第二套
solver=new reptemprulesolve(new reptempruletwo());
solver.getnewcontext(site,context);
我們達到了在執行期間,可以自由切換演算法的目的。
實際整個strategy的核心部分就是抽象類的使用,使用strategy模式可以在使用者需要變化時,修改量很少,而且快速.
strategy和factory有一定的類似,strategy相對簡單容易理解,並且可以在執行時刻自由切換。factory重點是用來建立物件。
strategy適合下列場合:
1.以不同的格式儲存檔案;
2.以不同的演算法壓縮檔案;
3.以不同的演算法截獲圖象;
4.以不同的格式輸出同樣資料的圖形,比如曲線 或框圖bar等
設計模式之Strategy 策略
strategy策略模式是屬於設計模式中 物件行為型模式,主要是定義一系列的演算法,把這些演算法乙個個封裝成單獨的類.stratrgy應用比較廣泛,比如,公司經營業務變化圖,可能有兩種實現方式,乙個是線條曲線,乙個是框圖 bar 這是兩種演算法,可以使用strategy實現.這裡以字串替代為例,有乙...
設計模式之Strategy 策略
strategy策略模式是屬於設計模式中 物件行為型模式,主要是定義一系列的演算法,把這些演算法乙個個封裝成單獨的類.stratrgy應用比較廣泛,比如,公司經營業務變化圖,可能有兩種實現方式,乙個是線條曲線,乙個是框圖 bar 這是兩種演算法,可以使用strategy實現.這裡以字串替代為例,有乙...
設計模式之Strategy 策略
strategy 是屬於設計模式中 物件行為型模式 主要是定義一系列的演演算法 把這些演演算法乙個個封裝成單獨的類別。stratrgy 應用比較廣泛 比如 公司經營業務變化圖 可能有兩種實現方式 乙個是線條曲線 乙個是框圖 bar 這是兩種演演算法 可以使用 strategy 實現。這裡以字串替代為...