码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式(strategy pattern)

时间:2015-08-17 13:34:25      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:

策略模式:

    定义了一个算法族,分别把每个算法封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

结构图:

技术分享

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)

标签:

原文地址:http://www.cnblogs.com/gattaca/p/4736150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!