一、 基本特點:
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...