
上面是百度百科的圖,多半它也是盜版來的,也不知道原作者是誰,請大家別再我這里復(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;
}