策略 Strategy 模式

2021-04-22 22:48:56 字數 2931 閱讀 2095

strategy

模式也叫策略模式,是由

gof提出的

23種軟體設計模式的一種。

strategy

模式是行為模式之一,它對一系列的演算法加以封裝,為所有演算法定義乙個抽象的演算法介面,並通過繼承該抽象演算法介面對所有的演算法加以封裝和實現,具體的演算法選擇交由客戶端決定(策略)。

strategy

模式主要用來平滑地處理演算法的切換。

概要:

- strategy

模式定義乙個演算法族,並把每一種可能的演算法封裝成乙個類,這些演算法可以在應用程式內部被動態替換。策略模式可以降低客戶端與演算法之間的耦合關係。 -

這些演算法具有乙個相同的抽象介面,具體的演算法通過繼承的子類實現。

乙個應用程式需要動態切換演算法的時候,

strategy

模式便變得非常有用。

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

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

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

strategy

模式uml類圖

strategy

策略(演算法)抽象。

concretestrategy

各種策略(演算法)的具體實現。

context

策略的外部封裝類,或者說策略的容器類。根據不同策略執行不同的行為。策略由外部環境決定。

strategy

模式的應用範例

為了幫助理解,我們舉例來說明。

我們的程式要實現加密功能。加密有乙個加密演算法,加密演算法有很多種,比如

md5,

des等,我們的程式需要實現這個功能,就是可以讓使用者選擇不同的加密演算法進行加密。

這個過程我們可以用

strategy

模式來實現。

檔案一覽:

client

測試類。

encryptstrategy

相當於strategy

角色。加密演算法的抽象類

/介面。

desstrategy

相當於concretestrategy

角色。des

加密演算法。

md5strategy

相當於concretestrategy

角色。md5

加密演算法。

encryptcontext

相當於context

角色。

**:

package

zieckey

.designpatterns

.study

.strategy

;/**

* *

客戶端測試程式。

* @author zieckey**/

public

class

client

}package

zieckey

.designpatterns

.study

.strategy

;/**

* * context

* *

給客戶端呼叫的

* * @author zieckey

* @since 2008/06/21

*/public

class

encryptcontext

//執行具體的策略行為

public

void

encrypt()}

package

zieckey

.designpatterns

.study

.strategy

;/**

* *

加密演算法介面。

* 所有的加密演算法都必須實現該介面。

* 如果新增乙個加密演算法,那麼只需要實現該介面,而現有的程式**都不用改變。

* * @author zieckey

* @since 2008/06/21

*/public

inte***ce

iencryptstrategy

package

zieckey

.designpatterns

.study

.strategy

;/**

* 具體的加密演算法

* @author zieckey**/

public

class

md5strategy

implements

iencryptstrategy

}package

zieckey

.designpatterns

.study

.strategy

;/**

* 具體的加密演算法

* @author zieckey**/

public

class

desstrategy

implements

iencryptstrategy}

測試輸出:

encrypt by des algorithm

.encrypt by md5 algorithm.

推薦**:好巴鹿(http://

www.haobalu.com )

策略模式 Strategy

public context string strategytype df對策略模式的定義是這樣的 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化不會影響到使用演算法的客戶 main函式 abstract class strategy class concretest...

策略模式 Strategy

定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 結構圖 策略模式的優缺點 策略模式的主要優點有 策略模式的缺點主要有兩個 必須對客戶端 呼叫者 暴露所有的策略類,因為使用哪種策略是由客戶端來決定的,因此,客戶端應該知道有什麼策略,並且了解各種策略之間的區別,否...

策略模式Strategy

1 定義乙個抽象的類abstract class 類名 然後裡面定義乙個抽象策略 abstract void 方法名 例如 public abstract class strategy 2 寫子類繼承父類,實現各自的演算法,例如 public class concretestrategya exte...