上面是百度百科的圖,多半它也是盜版來的,也不知道原作者是誰,請大家別再我這里復(fù)制這圖哈。

策略模式定義了一系列的算法,并將每一個算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨立于使用它的客戶而獨立變化。
//Filename: strategy.h
//Author: He.Mark.Qinglong
//說明: 除了這個模式是用在算法層面,怎么覺得這個和橋接模式差不多呢?還是STL的模版算法實現(xiàn)的策略模式靠譜點

#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;
}