策略模式 C 版

2021-07-03 03:24:05 字數 1422 閱讀 9841

一、 基本特點:

a)根據不同的情況,建立不同的物件 b)

每個物件方法名相同,方法的實現差別很大

二、組成:

a)抽象策略: 1個

b)具體策略  多個,封裝了相關的演算法和行為

c)排程類: 持有乙個具體策略類的引用,供客戶端使用

三、**實現:

#include

<

iostream

>

using

namespace

std;

/*************************************策略基類***************************************

*/class

strategybase

//主要定義了虛函式;/*

************************************具體策略類***************************************

*/class

strategyfirstchild:

public

strategybase

//策略子類,主要對父類定義的虛方法進行具體實現

};class

strategysecondchild:

public

strategybase

//策略子類,主要對父類定義的虛方法進行具體實現

};/*

************************************排程類***************************************

*/class

context

//排程類,根據傳進來的引數,選擇具體某個策略----待優化《參考教程》

void

multiway_tour()

};/*

************************************客戶端***************************************

*/int

main()

執行結果:

四、策略模式與簡單工廠模式對比:

簡單工廠模式:根據不同的情況,建立不同的物件,物件之間型別差別較大,

有可能各個類的方法名和個數差別很大

注重不同物件的建立:根據不同的情況建立不同的物件(eg:下單,查資金等)

策略模式

:根據不同的情況,建立不同的物件.物件不同型別相近,方法差別大. 尤其適合經

常變動的多種不同演算法

。 一般用於多個類的方法名都相同,但是實現方式不同

注重多個物件的相同行為:

遮蔽方法名相同,演算法實現細節不同之間的差異

(eg:txt、xml、dat、access四種格式的資料操作,讀取,刪除,修改) 

策略模式 C 版

一 基本特點 a 根據不同的情況,建立不同的物件 b 每個物件方法名相同,方法的實現差別很大 二 組成 a 抽象策略 1個 b 具體策略 多個,封裝了相關的演算法和行為 c 排程類 持有乙個具體策略類的引用,供客戶端使用 三 實現 includeusing namespace std 策略基類 cl...

設計模式PHP版三 策略模式

定義策略介面 inte ce strategy inte ce strategy 加法類 class addition class addition implements strategy 減法類 class subtraction class subtraction implements stra...

c 設計模式 策略模式

策略模式,看完策略模式最大的感受就是將所有的演算法封裝起來,讓它們之間可以相互替換,這個模式讓演算法的變化不會影響到使用者。我寫的例子還是之前的那個簡易計算器,策略模式可以和簡單工廠模式結合,在客戶端中只需認識乙個concent類,將所有的演算法物件建立以及演算法的使用全部封裝在乙個類中,即conc...