設計模式之策略模式

2021-08-15 19:12:59 字數 1268 閱讀 6421

1、定義

策略模式是行為模式,定義了演算法家族,分別封裝起來,讓他們可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。

2、角色

環境角色(context):持有乙個strategy引用。

抽象策略(strategy)角色:此角色定義了具體策略類所需的介面。是個抽象角色,通常是介面或抽象類實現。

3、優缺點

優點:

(1)策略模式提供了管理相關的演算法族的辦法。策略類的等級結構定義了乙個演算法或行為族。恰當使用繼承可以把公共的**移到父類裡面,從而避免**重複。

(2)使用策略模式可以避免使用多重條件(if-else)語句。多重條件語句不易維護,它把採取哪一種演算法或採取哪一種行為的邏輯與演算法或行為的邏輯混合在一起,統統列在乙個多重條件語句裡面,比使用繼承的辦法還要原始和落後。

缺點:

(1)客戶端必須知道所有的策略類,並自行決定使用哪乙個策略類。這就意味著客戶端必須理解這些演算法的區別,以便適時選擇恰當的演算法類。換言之,策略模式只適用於客戶端知道演算法或行為的情況。

(2)由於策略模式把每個具體的策略實現都單獨封裝成為類,如果備選的策略很多的話,那麼物件的數目就會很可觀。

4、舉例

結構圖:

**示例:

環境角色類

public class context 

/*** 策略方法

*/public void contextinte***ce()

}

抽象策略類

public inte***ce strategy
具體策略類

public class concretestrategya implements strategy 

}

public class concretestrategyb implements strategy 

}

客戶端

public static void main(string args)

設計模式之策略模式

include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...

設計模式之 策略模式

策略模式 strategy pattern 定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義了一系列演算法的方法,從概念上來看,所以得這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各...

設計模式之策略模式

何為策略,就是可以實現目標的方案集合。而完成一項任務有不同的方式,每一種方式稱為乙個策略。策略模式就是定義一系列演算法,將每乙個演算法封裝起來,並讓他們可以相互替換。很簡單的乙個例子 年底移動公司推出很多的活動,比如說 存話費贈食用油,交話費贈話費,買手機贈話費 等等。推出這些個活動目的就只有乙個,...