策略模式 封裝演算法,相互替換

2021-08-19 22:17:26 字數 957 閱讀 1955

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...