what
官方定義:定義演算法家族,分別封裝起來,讓他們之間可以相互替換,,此模式讓演算法的變化不會影響到十四用演算法的客戶
自己總結:封裝策略,讓策略根據要求相互替換
when
需要不同時間應用不同的業務規則,就可以考蘇使用策略模式應對變化(和狀態模式蠻像的)
why和狀態模式一樣,這個模式限消除了條件語句,而且把變化的部分抽離出來——一系列演算法,我們可以根據需求來使用對應的演算法。
demo
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace 策略模式
abstract class strategy
class concretestrategya:strategy
}class concretestrategyb : strategy
}class concretestrategyc : strategy
}class content
public void contextinte***ce()
//問題:出現基模擬子類的可訪問性低 原因:基類的訪問修飾符比子類要低,因為c# 預設訪問修飾符是private}}
}
uml 圖
這個模式和狀態模式的相同點:
1、消除條件語句
2、uml圖類似
3、封裝變化部分,都用聚合模式
4、狀態模式執行時由狀態改變,引發行為改變;策略模式執行時由需求不同,引發演算法不同
不同點:
1、**不同,為什麼不同還沒有清晰地認識
2、適用條件不同
演算法的封裝與切換 策略模式(一)
俗話說 條條大路通羅馬。在很多情況下,實現某個目標的途徑不止一條,例如我們在外出旅遊時可以選擇多種不同的出行方式,如騎自行車 坐汽車 坐火車或者坐飛機,可根據實際情況 目的地 旅遊預算 旅遊時間等 來選擇一種最適合的出行方式。在制訂旅行計畫時,如果目的地較遠 時間不多,但不差錢,可以選擇坐飛機去旅遊...
演算法的封裝與切換 策略模式(一)
俗話說 條條大路通羅馬。在很多情況下,實現某個目標的途徑不止一條,例如我們在外出旅遊時可以選擇多種不同的出行方式,如騎自行車 坐汽車 坐火車或者坐飛機,可根據實際情況 目的地 旅遊預算 旅遊時間等 來選擇一種最適合的出行方式。在制訂旅行計畫時,如果目的地較遠 時間不多,但不差錢,可以選擇坐飛機去旅遊...
JavaScript 策略模式封裝表單驗證庫
直接上 html htmllang en head metacharset utf 8 title titletitle head body formid form p 使用者名稱 inputtype text name username p p 密碼 inputtype password name...