策略類模式 學習筆記

2021-04-22 23:44:41 字數 728 閱讀 7163

策略模式:

他定義了演算法家族,使得各種演算法可以相互替換,從而達到演算法的增加和改變不影響到使用演算法的客戶端。

他定義了一系列演算法,從概念上看這些演算法都是實現了統一功能,只是實現不同。他們可以以相同的方式呼叫,減少了演算法和使用演算法之間的耦合

strategy(演算法類)類為context(工廠類)提供了一系列可重用的演算法和行為。繼承有助於折取出演算法中的公共功能。

另外策略模式簡化了單元測試,每個演算法都有自己的實現類,可以自己提供介面測試。

策略模式可以封裝不同的演算法,在實踐中,我們發現他可以封裝任何型別的規則,只要在分析中聽到要在不同的時間響應不同的規則,就可以考慮用策略模式。

什麼時候使用策略類呢:

1、如果在乙個系統中有許多類,他們的區別僅在於他們的行為,用策略類可以動態的讓乙個物件在不同的行為中選擇合適的行為。

2、乙個系統需要在一系列演算法中選擇一種演算法,同時這些演算法都是乙個父類,由於多型原則,客戶端可以選擇實現不同的演算法。

3、乙個系統使用的資料可以不讓客戶端知道。

4、如果乙個物件有很多的行為,如果不用恰當的模式,這些行為就只好使用多重的條件選擇語句來實現。此時,使用策略模式,把這些行為轉移到相應的具體策略類裡面,就可以避免使用難以維護的多重條件選擇語句,並體現物件導向設計的概念

5、以不同的格式儲存檔案;

6、以不同的演算法壓縮檔案;

7、以不同的演算法截獲圖象;

8、以不同的格式輸出同樣資料的圖形,比如曲線 或框圖bar等

設計模式學習筆記 策略模式

我覺得策略模式與工廠方法模式極其相似!策略模式 工廠方法模式 如果單從圖來看,看不出有何相似之處。但看看呼叫方法就知道了 策略模式 context context new context abstractstrategy strategy 採用哪種策略,由呼叫方決定 strategy new con...

設計模式學習筆記 策略模式

問題 商場收銀軟體,根據單價和數量,得到總價。設計思路 兩個輸入框,分別代表單價和數量,乙個下拉框,選項有 正常,打折,滿減等演算法 商場有時需要正常收費,有時打折扣,有時滿300送100.下面是簡單工廠模式下 所有演算法的父類抽象類cashsuper public abstract class c...

設計模式學習筆記 策略模式

考慮這樣乙個場景。我們要計算兩個數的值,但是演算法不確定,可以是加減乘除的任意一種,甚至可以是加減乘除任意組合計算。就實現方式來說可以有多種。比如我可以通過if else 繼續演算法控制 class context public function calculate flag else if fla...