四、策略模式的示例
五、策略模式的優缺點
六、題外話
策略模式是一種行為模式,它通過對一系列的演算法(或者行為)加以封裝,並為這些演算法(或者行為)定義統一的抽象演算法(或者行為)介面, 具體子類繼承該抽象演算法(或者行為)介面對所有的演算法(或者行為)加以封裝和實現,呼叫者去自由的選擇使用哪個演算法(或者行為)。
1、乙個系統需要動態地在幾種演算法(或者行為)中選擇一種時,可以使用策略模式。
2、當乙個物件有很多的行為,為避免使用過多的條件判斷語句,可以使用策略模式來實現。
策略抽象類給策略具體類提供統一的共同介面和方法。
策略具體類繼承策略抽象類,用於實現策略抽象父類中的共同介面和方法。
策略的外部封裝類, 根據不同的策略執行不同的行為。
// strategypattern.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
//#include
#include
using
namespace std;
#define delete_ptr(p) }
// 策略演算法基類
class
algorithmbase
;// 氣泡排序演算法
class
bubblesort
:public algorithmbase};
// 選擇排序演算法
class
selectsort
:public algorithmbase};
// 插入排序演算法
class
insertsort
:public algorithmbase};
// 策略模式的容器類
class
contextalgorithm}~
contextalgorithm()
void
choicealgorithm()
private
: algorithmbase *m_palgorithmbase;};
intmain()
執行結果:
1、策略模式提供了管理演算法族的辦法,演算法之間可以自由切換。
2、策略模式可以避免使用多重條件判斷。
3、策略模式可以進行良好的演算法擴充套件。
1、策略過多,導致策略類過多,呼叫者需要理解呼叫自己需要的一種演算法類。
2、所有的策略類都要暴露給呼叫者才行。
能力有限,如有錯誤,多多指教。。。
軟體設計模式 設計軟體模式簡述
1.1 軟體設計模式概念 設計模式是指被人們反覆使用且被大部分人所了解的 經過分類編目的 設計等的經驗總結,簡單來說就是可以重複使用以前的優秀軟體 這樣不僅能夠增強人們對軟體的熟知度從而使用起來更容易熟練上手,與此同時,使用設計模式進行軟體開發還能夠很大程度上減少開發軟體過程容易出現的問題,從而達到...
軟體設計模式 門面設計模式
門面設計模式 門面模型 facade pattern 又稱外觀模型,為子系統中的一組介面提供乙個一致的介面,facade模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用,簡而言之就是把一堆複雜的流程封裝成乙個介面提供給使用者簡單的使用,這個設計模式裡有三個角色 1.門面角色 facade ...
軟體設計模式
軟體設計模式是軟體設計經驗的總結,是對軟體設計中反覆出現的設計問題的成功解決方案的描述。四元素 名稱 問題 解決方案 效果 1 重用設計,重用設計比重用 更有意義,它會自動帶來 的重用 2 為設計提供公用的詞彙,每個模式名就是乙個設計詞彙,其概念使得程式設計師間交流更方便 3 在開發文件中採用模式詞...