前文回顧
單例模式(一)
單例模式(二)
觀察者模式
簡單工廠模式
工廠方法模式(一)
工廠方法模式(二)
抽象工廠模式(一)
抽象工廠模式(二)
原型模式
外觀模式
中介者模式
**模式
裝飾者模式
所謂策略即解決一件事情的演算法、或者方法,是一些具有相同簽名的函式,把策略封裝成物件(可以是類物件、也可以是任何形式的可呼叫物件),這樣便可把策略定義為類的資料成員,就可以動態的設定資料成員的值,即更換策略。
場景描述
假設乙個簡單的遊戲場景:玩家角色有攻擊的動作,但根據裝配**的不同,會有不同的攻擊效果。
策略基類
#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...