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

2021-07-02 08:01:40 字數 1101 閱讀 9950

策略模式(strategy): 定義演算法家族,分別封裝起來,讓這些演算法直接可以相互替換,我們可以自由新增或者修改演算法而不會影響客戶.

優點:簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試。

如果我們在客戶端為了判斷使用哪個演算法而使用switch語句來分析,我們可以使用策略模式把這個判斷的過程隱藏到後台,把每個演算法用乙個strategy類實現。這樣就簡化了客戶端的**,也隱藏了實現的細節。

#ifndef strategy_h

#define strategy_h

#includeusing namespace std;

class cashsuper

;/*工廠模式

class cashcontext

void operator =(cashsuper * re)

double getresult(double money)

};*/

class cashcontext

cashcontext(char &stype);

void operator =(char &stype);

double getresult(double money)

return cs->acceptcash(money);

}};class cashnormal:public cashsuper

};class cashrebate:public cashsuper

double acceptcash(double money) };

class cashreturn :public cashsuper

double acceptcash(double money) };

cashcontext::cashcontext(char &stype) :strategytype(stype)

}void cashcontext::operator =(char &stype)

}#endif

#include"strategy.h"

int main()

return 0;

}

設計模式 策略模式C 實現

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

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

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

設計模式(C 實現)(十六) 策略模式

乙個問題,有三種解決方法,每種解決方法,適用於不同的場景,靈活設計切換每種解決方法來解決該問題,並可新增解決方法。要能靈活的切換解決問題的方法,且能夠靈活新增方法。strategy.h 在該檔案中,實現了策略的基類,及三個策略的子類 pragma once include 策略基類 class is...