一:涉及角色:
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...