设计模式之策略模式。
策略模式的主要作用是:整体地替换算法。
无论什么程序,其目的都是解决问题。而为了解决问题,我们需要编写特定的算法。使用Strategy模式可以整体地替换算法的实现部分。能够整体地替换算法,能让我们轻松地以不同的算法解决同一个问题,这种模式就是Strategy模式。
示例代码如下:
#include<iostream>
using namespace std;
//策略模式
//准备一组算法,并将每一个算法封装起来,使得他们可以互换。
class Strategy
{
public:
virtual void Crypto()=0;
virtual ~Strategy(){}
};
//对称加密 适合于加密大分块的数据 加密和解密密钥一样。
//非对称加密 加密速度慢 加密强度高 安全性高 特点:加密和解密密钥不一样。
class AES:public Strategy
{
public:
virtual void Crypto()
{
cout<<"AES加密"<<endl;
}
};
class DES:public Strategy
{
public:
virtual void Crypto()
{
cout<<"DES加密"<<endl;
}
};
class Context
{
public:
void SetStrategy(Strategy* strategy)
{
this->m_strategy = strategy;
}
void Operator()
{
m_strategy->Crypto();
}
private:
Strategy* m_strategy;
};
int main()
{
/*
DES* des= new DES();
des->Crypto();
delete des;
*/
Strategy* pStrategy=NULL;
pStrategy=new DES();
Context* context=new Context();
context->SetStrategy(pStrategy);
context->Operator();
delete pStrategy;
pStrategy=new AES();
context->SetStrategy(pStrategy);
context->Operator();
delete pStrategy;
delete context;
return 0;
}
执行程序,运行结果如下图所示:
该模式在具体的程序库中使用的例子如下(后续补充):