定義:策略模式定義並封裝了一系列演算法,它們之間可以相互替換,且演算法的變化不會對演算法的使用者造成影響。
優點:靈活替換,**復用性強;完美支援開閉原則。
缺點:過多的策略拓展會使**變得複雜,不容易理解。
從定義中可以得知該模式會定義一系列的演算法,這裡需要考慮到開閉原則使用介面、實現的方式進行拓展;而演算法之間可以互相替換,可以封裝乙個中間類根據不同的演算法執行相應的邏輯避免外部對策略的直接呼叫,外部邏輯只需要呼叫中間類的執行方法即可。
簡單的用一張圖表示:
策略封裝**示例:
public
inte***ce
istrategy
public
class
strategya
:istrategy
}public
class
strategyb
:istrategy
}public
class
context
public
void
executestrategy()
}
外部呼叫**示例:
public
void
demo()
執行demo方法可得到結果
執行a類中的方法
執行b類中的方法
設計模式之策略模式
include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...
設計模式之 策略模式
策略模式 strategy pattern 定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義了一系列演算法的方法,從概念上來看,所以得這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各...
設計模式之策略模式
何為策略,就是可以實現目標的方案集合。而完成一項任務有不同的方式,每一種方式稱為乙個策略。策略模式就是定義一系列演算法,將每乙個演算法封裝起來,並讓他們可以相互替換。很簡單的乙個例子 年底移動公司推出很多的活動,比如說 存話費贈食用油,交話費贈話費,買手機贈話費 等等。推出這些個活動目的就只有乙個,...