策略模式(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...