上面是百度百科的图,多半它也是盗版来的,也不知道原作者是谁,请大家别再我这里复制这图哈。

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
//Filename: strategy.h
//Author: He.Mark.Qinglong
//说明: 除了这个模式是用在算法层面,怎么觉得这个和桥接模式差不多呢?还是STL的模版算法实现的策略模式靠谱点

#include <iostream>

class Strategy{
public:
    virtual void AlgorithmInterface() = 0;
    virtual ~Strategy(){}
};

class ConcreateStratA: public Strategy{
public:
    virtual void AlgorithmInterface(){
        std::cout<< "策略A" <<std::endl;
    }

    ~ConcreateStratA(){}
};

class ConcreateStratB: public Strategy{
public:
    virtual void AlgorithmInterface(){
        std::cout<< "策略B" <<std::endl;
    }

    ~ConcreateStratB(){}
};

class ConcreateStratC: public Strategy{
public:
    virtual void AlgorithmInterface(){
        std::cout<< "策略C" <<std::endl;
    }

    ~ConcreateStratC(){}
};

class Context{
private:
    Strategy *_stg;
public:
    Context(Strategy *stg){
        this->_stg = stg;
    }

    void contextInterface(){
        this->_stg->AlgorithmInterface();
    }
};
测试用例:
#include "strategy.h"

int main(){
    auto context = new Context(new ConcreateStratA);
    context->contextInterface();
    delete context;

    context = new Context(new ConcreateStratC);
    context->contextInterface();
    delete context;

    context = new Context(new ConcreateStratB);
    context->contextInterface();
    delete context;

    return 0;
}