c 策略模式 Strategy Method

2022-05-13 22:27:17 字數 959 閱讀 3047

別人的部落格再講策略模式時都會講三國,策略類就是趙雲的錦囊,錦囊裡裝著若干妙計。在打仗時想要用什麼妙計,直接從錦囊裡去取。

錦囊類:

class context

;

context::context(istrategy *isstrategy):m_strategy(isstrategy)

context::~context()

void context::operate(void

)

妙計的介面:

class istrategy

; virtual ~istrategy(void){};

virtual void operate(void) = 0;

};

走後門妙計:

class backdoor:public

istrategy

;

backdoor::backdoor(void

)backdoor::~backdoor(void

)void backdoor::operate(void

)

開綠燈妙計:

class greenlight:public

istrategy

;

greenlight::greenlight(void

)greenlight::~greenlight(void

)void greenlight::operate(void

)

主函式:

int

main()

執行結果:

#1策略

走後門了!#2策略

開綠燈了!

---恢復內容結束---

c 設計模式 策略模式

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

C 設計模式 策略模式

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

C 設計模式 策略模式

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