Strategy策略(行為型模式)

2022-03-15 09:56:27 字數 446 閱讀 1715

演算法與物件的耦合

物件可能經常需要使用多種不同的演算法,但是如果變化頻繁,會將型別變得脆弱...

動機在軟體構建過程中,某些物件使用的演算法可能多種多樣,經常改變,如果將這些演算法都編碼到物件中,將會使得物件變得異常複雜;而且有時候支援不使用的演算法是乙個效能負擔。

如何在執行時根據需要透明地更改物件的演算法?將演算法與物件本身解耦,從而避免上述問題?

意圖定義一系列演算法,把它們乙個個封裝起來,並且使它們可互相替換。該模式使得演算法可以獨立於使用它的客戶而變化。

strategy模式的要點

strategy及其子類為元件提供了一系列可重用的演算法,從而可以使得型別在執行時方便地根據需要在各個演算法之間進行切換。所謂封裝演算法,支援演算法的變化。

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

策略模式 Strategy 行為筆記

一 涉及角色 1 環境角色 context 持有strategy類 抽象演算法類 引用 2 抽象策略 strategy 介面 or 抽象類 3 具體策略 concretestrategy 包裝相關演算法或行為 注意 共用 公共行為 可以 上移到 strategy 抽象類 二 何時 使用 何種 具體策...