策略模式:
定义了一个算法族,分别把每个算法封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
结构图:
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; }
原文:http://www.cnblogs.com/gattaca/p/4736150.html