設計模式 真正理解策略模式(Strategy)

2022-01-31 21:49:37 字數 867 閱讀 4012

基本概念

演算法:計算機處理問題的方法,

策略:策略即演算法實現物件中行為的方式

strategy模式的應用場景一般是:

- 具有多種可能需要實現的演算法

- 需要在程式中對演算法進行動態切換

-物件的行為需要根據上下文動態的改變。可以考慮使用策略模式.

如:加密有乙個加密演算法,加密演算法有很多種,比如md5,des等,我們的程式需要實現

這個功能,就是可以讓使用者選擇不同的加密演算法進行加密。

官方定義:strategy模式定義乙個演算法族,並把每一種可能的演算法封裝成乙個類,這些演算法可以在應用程式內部被動態替換。此模式讓演算法的變法不會影響到使用演算法的客戶。

解析策略模式:

當物件的某個行為有多種實現方式時,為了把所有這些實現方式的變化對現有系統的影

響降到最低。當有新的需求時可以對擴充套件開發對修改關閉。可以把該行為抽象為乙個接

口或抽象類,然後由它的子類來完成不同方式的實現。而使用該行為的物件,通過引用

該超型別的變數,來把對它的請求委託給該行為的抽象來完成。由於實際完成該功能

的物件是乙個超型別所以他們執行時引用的物件可以為任何它的子型別。即通過這種多

態的機制可以在執行時動態指定執行所需要的實現方式也可以說成實現是策略.策略模式可以降低客戶端與演算法之間的耦合關係。

策略模式要點:

strategy模式重在外部對策略(演算法)的選擇,策略的選擇由外部條件決定,也就是說

演算法的動態的切換。

strategy模式中只有具有繼承關係的演算法類

strategy模式從類的角度,對整個演算法加以封裝

理解js設計模式之策略模式

策略模式的定義 定義一系列的演算法,然後根據實際情況去呼叫 乙個小插曲 最近在專案的過程中接手了乙個比較複雜的需求,由於是舊的專案用新的框架重構,所以能夠看見以前的 吸取下前人 的精華,復用一些可用的 免得自己寫半天。當然這篇的主題是策略模式,不會離題,因為當我完成了version 1 後,專案裡面...

理解js設計模式之策略模式

策略模式的定義 定義一系列的演算法,然後根據實際情況去呼叫 乙個小插曲 最近在專案的過程中接手了乙個比較複雜的需求,由於是舊的專案用新的框架重構,所以能夠看見以前的 吸取下前人 的精華,復用一些可用的 免得自己寫半天。當然這篇的主題是策略模式,不會離題,因為當我完成了version 1 後,專案裡面...

設計模式 策略設計模式

策略設計模式其實就是多型的使用,父類引用指向子類物件。策略模式的最大特點是使得演算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。策略模式的缺點其實也很明顯,在於策略模式把每一種具體的策略都封裝成乙個實現類,如果策略有很多的話,很顯然是實現類就會導致過多,顯得臃腫。案列 author de...