策略模式 Strategy 行為筆記

2021-07-27 07:22:45 字數 1223 閱讀 9591

一:涉及角色:

1、環境角色(context):持有strategy類(抽象演算法類)引用

2、抽象策略(strategy):介面 or 抽象類

3、具體策略(concretestrategy) 包裝相關演算法或行為

注意: 共用**(公共行為),可以**上移到:strategy 抽象類!

二、何時 使用 何種 具體策略 呢?

策略模式 不負責做這個決定,應當由 客戶端自己 決定!

缺點:只適用於 客戶端 知道所有 具體演算法或行為, 2、造成很多策略類

三、什麼情況下 使用 策略模式

1、系統中 有許多類 , 區別 在於它們的 行為,那麼使用 策略模式 可以動態地 讓乙個物件 在眾多行為中  選擇 一種行為

2、系統需要 動態地 在幾種演算法中 選擇一種。把演算法包裝到 乙個個 具體演算法類

3、系統演算法有使用的 重要資料 不可以給客戶端知道。

4、乙個物件有 很多行為,用到了 條件選擇語句 來 選擇實現

環境角色(context):

//環境角色

public class context

public void setstrategy(strategy strategy)

public static void main(string args)

}

抽象策略(strategy):

//抽象策略(演算法類)

public abstract class strategy

具體策略(concretestrategy)a

public class concretestrategya extends strategy

}

具體策略(concretestrategy)b

public class concretestrategyb extends strategy

}

Strategy策略(行為型模式)

演算法與物件的耦合 物件可能經常需要使用多種不同的演算法,但是如果變化頻繁,會將型別變得脆弱.動機在軟體構建過程中,某些物件使用的演算法可能多種多樣,經常改變,如果將這些演算法都編碼到物件中,將會使得物件變得異常複雜 而且有時候支援不使用的演算法是乙個效能負擔。如何在執行時根據需要透明地更改物件的演...

行為型模式之策略模式Strategy

一 認識 策略模式strategy 定義了演算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶 二 使用場景說明 strategy 宣告乙個與所有支援的演算法共同的介面。上下文使用此介面呼叫由具體策略定義的演算法。concretestrategy 利用策...

策略模式(strategy 行為型模式c 簡單例子

策略模式 strategy 行為型模式c 簡單例子 例子主是運用策略模式分解幾種移動演算法。namespace adapterpattern private void b isplay click object sender,eventargs e public inte ce iproessmov...