C 設計模式 策略模式

2021-09-29 10:50:09 字數 1108 閱讀 9459

優點: 演算法可以自由切換 、 避免使用多重條件判斷 、 擴充套件性良好

缺點: 每乙個策略都是乙個類,復用的可能性很小,類數量增多; 所有的策略類都需要對外暴露

應用: 多個類只有在演算法或行為上稍有不同的場景; 演算法需要自由切換的場景;需要遮蔽演算法規則的場景

乙個策略家族的具體策略數量超過4個,則需要考慮使用混合模式, 解決策略類膨脹和對外暴露的問題

#ifndef strategy_h

#define strategy_h

class strategy

virtual void dosomething() = 0;

};#endif // strategy_h

#ifndef concretestrategy_h

#define concretestrategy_h

#include #include "strategy.h"

class concretestrategy1 : public strategy

};class concretestrategy2 : public strategy

};#endif // concretestrategy_h

#ifndef context_h

#define context_h

#include "strategy.h"

class context

//封裝後的策略方法

void doanythinig()

private:

strategy *strategy_ = nullptr;

};#endif // context_h

#include "concretestrategy.h"

#include "context.h"

int main(int argc, char *ar**)

原始碼github:cppdesignpattern

coologic 部落格網域名稱已更改,已從 www.techieliang.com 改為

www.coologic.cn,上述鏈結位址受到影響,若需檢視源文請手動修改,多有不便,敬請諒解。

c 設計模式 策略模式

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

C 設計模式 策略模式

策略模式 定義了演算法家族,分別封裝起來,然後定義乙個統一的藉口,演算法之間可以相互替換。使用該模式可以讓演算法的變化不影響到使用演算法的客戶。模式實現 策略模式具體實現時通常與工廠模式相結合,定義乙個工廠類,來決定初始化哪個演算法。如下 include using namespace std en...

C 設計模式 策略模式

c 設計模式 策略模式 策略模式就是將多種演算法類進行封裝,每個演算法類都繼承於乙個基類a,然後重寫乙個新類b,在這個新類裡定義乙個基類a的物件,然後在新類b的建構函式中對基類a的物件進行賦值,這種方法需要對b的建構函式傳引數,如果需要不傳引數,則可以寫成模板的形式,以下是 include usin...