#include<iostream>
using namespace std;
class Strategy
{
public:
virtual void crypt() = 0;
};
class DES :public Strategy
{
public:
virtual void crypt()
{
cout << "DES加密执行!" << endl;//模拟加密过程
}
};
class AES :public Strategy
{
public:
virtual void crypt()
{
cout << "AES加密执行!" << endl;
}
};
class Context
{
public:
void setStrategy(Strategy *strategy)
{
m_strategy = strategy;
}
void doCrypt()
{
m_strategy->crypt();//为内容设置加密策略
}
private:
Strategy *m_strategy;
};
void main()
{
Strategy*strategy = NULL;
Context*context = NULL;
context = new Context;
strategy = new DES;
context->setStrategy(strategy);
context->doCrypt();
delete strategy;
strategy = new AES;
context->setStrategy(strategy);
context->doCrypt();
delete strategy;
delete context;
}
运行结果: