C 設計模式3 (策略模式)

2021-06-27 10:33:15 字數 2160 閱讀 2922

策略模式是將演算法的不同實現封裝到乙個類裡面,將演算法的實現和演算法的使用分離。在演算法發生變化時不會影響演算法的呼叫者。在需要不同演算法時,可以相互替換,而不影響使用者。

下面是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...