標籤:
策略模式:
定義了一個演算法族,分別把每個演算法封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化獨立於使用演算法的客戶。
結構圖:
C++實現:
class calculateStrategy {public: virtual int calculate(int value1, int value2) = 0;};class Plus : public calculateStrategy {public: int calculate(int value1, int value2) { return value1 + value2;}};class Minus : public calculateStrategy {public: int calculate(int value1, int value2) { return value1 - value2;}};class Calculator {private: calculateStrategy *cs;public: Calculator(calculateStrategy *strategy): cs(strategy) {} int calculate(int value1, int value2) { return cs->calculate(value1, value2); } void setStrategy(calculateStrategy *strategy) { cs = strategy; }; ~Calculator() { delete cs; }};int main(){ calculateStrategy *strategy = new Plus; Calculator cal(strategy); cout << cal.calculate(1, 2) << endl; delete strategy; strategy = new Minus; cal.setStrategy(strategy); cout << cal.calculate(1, 2) << endl; //delete strategy;}
策略模式(strategy pattern)