在策略模式(strategy pattern)中,乙個類的行為或其演算法可以在執行時更改。這種型別的設計模式屬於行為型模式。
三國演義中火燒赤壁前後孔明使用的策略(計謀)可謂是乙個個精妙演算法。
曹操80萬大軍南征,取荊州,劉備敗走新野,駐紮江夏。諸葛亮為抗曹而聯吳,使用一系列策略,
策略a-舌戰群雄:隻身過江,江東名士群起發難,孔明舌戰群雄。
策略b-草船借箭:後為破周瑜暗害,神算三日江面大霧瀰漫,終而草船借箭。
策略c-火燒赤壁:繼而在隆冬之際,建壇祭風,借來東南大風,火燒赤壁。
通俗的判斷條件做法:為提高擴充套件性,實現類的行為或其演算法可以在執行時更改。if (江東名士發難)
策略a-舌戰群雄
if (神算大霧瀰漫)
策略b-草船借箭
if (建壇借風)
策略c-火燒赤壁
介面inte***ce:策略strategy構建使用策略的類class:錦囊庫public int dooperation(string 各種前提因素);
實現類class:策略a
public int dooperation(string 江東名士發難)
實現類class:策略b
public int dooperation(string 神算大霧瀰漫)
實現類class:策略c-火燒赤壁
public int dooperation(string 建壇借風)
類class:錦囊庫成員變數:策略strategy;
public int executestrategy(string 各種前提因素){ 策略strategy.dooperation( 各種前提因素));
設計模式(三) 策略模式
策略模式的結構圖 引用 模版方法模式,對照類圖可以看到,策略模式與模版方法模式的區別僅僅是多了乙個單獨的封裝類context,它與模版方法模式的區別在於 在模版方法模式中,呼叫演算法的主體在抽象的父類中,而在策略模式中,呼叫演算法的主體則是封裝到了封裝類context中,抽象策略strategy一般...
設計模式(三) 策略模式
在策略模式 strategy pattern 中,乙個類的行為或其演算法可以在執行時更改。這種型別的設計模式屬於行為型模式。在策略模式中,我們建立表示各種策略的物件和乙個行為隨著策略物件改變而改變的 context 物件。策略物件改變 context 物件的執行演算法 上圖 三個類都實現了介面定義的...
設計模式之策略模式
include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...