設計模式的 C 實現 策略模式

2021-10-09 09:12:52 字數 1554 閱讀 3628

前文回顧

單例模式(一)

單例模式(二)

觀察者模式

簡單工廠模式

工廠方法模式(一)

工廠方法模式(二)

抽象工廠模式(一)

抽象工廠模式(二)

原型模式

外觀模式

中介者模式

**模式

裝飾者模式

所謂策略即解決一件事情的演算法、或者方法,是一些具有相同簽名的函式,把策略封裝成物件(可以是類物件、也可以是任何形式的可呼叫物件),這樣便可把策略定義為類的資料成員,就可以動態的設定資料成員的值,即更換策略。

場景描述

假設乙個簡單的遊戲場景:玩家角色有攻擊的動作,但根據裝配**的不同,會有不同的攻擊效果。

策略基類

#include

using

namespace std;

class

attack;}

;

策略派生類

①.普通攻擊

#include

"attack.h"

class

commonattack

:public attack

};

②.匕首攻擊

#include

"attack.h"

class

daggerattack

:public attack

};

③.手槍攻擊

#include

"attack.h"

class

gunattack

:public attack

};

策略使用者

#include

"commonattack.h"

#include

class

plaer

void

showattack()

void

setattack

(shared_ptr m_attack)

private

: string name;

shared_ptr attack;

};

客戶端呼叫

設計模式 策略模式C 實現

strategy pattern 定義一組演算法,將每個演算法都封裝起來,並且使他們可以相互替換 也叫政策模式 class strategy protected strategy public virtual strategy 0 virtual void dosomething 0 class c...

設計模式C 實現二 策略模式

策略模式 strategy 定義演算法家族,分別封裝起來,讓這些演算法直接可以相互替換,我們可以自由新增或者修改演算法而不會影響客戶.優點 簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試。如果我們在客戶端為了判斷使用哪個演算法而使用switch語句來分析,我們可以使用策略模式...

設計模式C 實現(2) 策略模式

對外的介面一樣,只是各自實現上存在差異。用策略模式來封裝演算法,效果比較好。下面以快取記憶體 cache 的替換演算法為例,實現策略模式。抽象介面 class replacealgorithm 三種具體的替換演算法 class lru replacealgorithm public replacea...