策略模式是將演算法的不同實現封裝到乙個類裡面,將演算法的實現和演算法的使用分離。在演算法發生變化時不會影響演算法的呼叫者。在需要不同演算法時,可以相互替換,而不影響使用者。
下面是uml圖:
以下是策略基類和子類:
#ifndef basestrategyinte***ce_h
#define basestrategyinte***ce_h
class basestrategyinte***ce
;#endif // basestrategyinte***ce_h
#ifndef strategya_h
#define strategya_h
#include "basestrategyinte***ce.h"
class strategya : public basestrategyinte***ce
;#endif // strategya_h
#include "strategya.h"
#include using namespace std;
strategya::strategya()
void strategya::algorithmfunction()
#ifndef strategyb_h
#define strategyb_h
#include "basestrategyinte***ce.h"
class strategyb : public basestrategyinte***ce
;#endif // strategyb_h
#include "strategyb.h"
#include using namespace std;
strategyb::strategyb()
void strategyb::algorithmfunction()
#ifndef strategyc_h
#define strategyc_h
#include "basestrategyinte***ce.h"
class strategyc : public basestrategyinte***ce
;#endif // strategyc_h
#include "strategyc.h"
#include using namespace std;
strategyc::strategyc()
void strategyc::algorithmfunction()
#ifndef replace_h
#define replace_h
#include "basestrategyinte***ce.h"
#include class replace
~replace()
}public:
void algorithm()
};#endif // replace_h
呼叫策略方法:
replace *replacea = new replace(new strategya());
replacea->algorithm();
delete replacea;
replace *replaceb = new replace(new strategyb());
replaceb->algorithm();
delete replaceb;
replace *replacec = new replace(new strategyc());
replacec->algorithm();
delete replacec;
輸出:
strategy a
strategy b
strategy c
以上是策略模式的最簡單實現方式,也可以使用其他實現方式,其根本思想不變。
設計模式3策略模式
一種定義一系列演算法的方法,從概念上來看所有這些演算法完成的都是相同的工作,只是實現不同,它們可以以相同的方式呼叫相同的演算法,減少了各種演算法類和使用演算法類之間的耦合 策略模式的 策略類 為 所有context 定義了一系列的可供重用的演算法和行為.繼承有助於析取出這些演算法中的公共行為 策略模...
c 設計模式 策略模式
策略模式,看完策略模式最大的感受就是將所有的演算法封裝起來,讓它們之間可以相互替換,這個模式讓演算法的變化不會影響到使用者。我寫的例子還是之前的那個簡易計算器,策略模式可以和簡單工廠模式結合,在客戶端中只需認識乙個concent類,將所有的演算法物件建立以及演算法的使用全部封裝在乙個類中,即conc...
C 設計模式 策略模式
策略模式 定義了演算法家族,分別封裝起來,然後定義乙個統一的藉口,演算法之間可以相互替換。使用該模式可以讓演算法的變化不影響到使用演算法的客戶。模式實現 策略模式具體實現時通常與工廠模式相結合,定義乙個工廠類,來決定初始化哪個演算法。如下 include using namespace std en...