設計模式之Strategy 策略模式系列1

2021-06-02 02:49:22 字數 1152 閱讀 9727

看了jdon上寫的的策略模式,例子很簡單,**有些錯誤。  文章寫的比較早,其實現在的策略模式大多是用enum來實現,會簡單的多,但是思想不變:不同的演算法或者行為各自封裝,使用者自行挑選。  

先摘抄他上面的**,錯誤已經改正:

strategy策略模式是屬於設計模式中 物件行為型模式,主要是定義一系列的演算法,把這些演算法乙個個封裝成單獨的類.strategy應用比較廣泛,比如, 公司經營業務變化圖, 可能有兩種實現方式,乙個是線條曲線,乙個是框圖(bar),這是兩種演算法,可以使用strategy實現.這裡以字串替代為例, 有乙個檔案,我們需要讀取後,希望替代其中相應的變數,然後輸出.關於替代其中變數的方法可能有多種方法,這取決於使用者的要求,所以我們要準備幾套變數字元替代方案。

public abstract class reptemprule 

public string getnewstring()

public abstract string replace() throws exception; }

public class reptempruleone extends reptemprule }

public class reptempruletwo extends reptemprule }

public class reptemprulesolve

public string getnewcontext() catch (exception e)

return null ; }

public void changealgorithm(reptemprule newalgorithm)

}public class test

}

我們達到了在執行期間,可以自由切換演算法的目的。

實際整個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實現.這裡以字串替代為例,有乙...