解释说明:
main(),赵云
CContext,锦囊
IStrategy,策略接口
CBackDoor,策略之一
CGivenGreenLight,策略之二
CBlockEnemy,策略之三
说明:一个策略放到一个锦囊里。当用的时候,找到这个锦囊,从锦囊里拿出策略来使用。 注意:锦囊只是简单的装载和调用策略,锦囊里没有逻辑。策略会有更大的自主权,运行更多的逻辑。
一个策略放到一个锦囊里。当用的时候,找到这个锦囊,从锦囊里拿出策略来使用。
注意:锦囊只是简单的装载和调用策略,锦囊里没有逻辑。策略会有更大的自主权,运行更多的逻辑。
一个锦囊只能装一个策略
#pragma once
#include <iostream>
using namespace std;
//策略接口
class IStrategy
{
public:
IStrategy(){}
virtual ~IStrategy(){}
virtual void Operator() = 0;
};
//实际策略BackDoor
class BackDoor :public IStrategy
{
public:
BackDoor(){}
~BackDoor(){}
void Operator();
};
void BackDoor::Operator()
{
cout << "找乔国老帮忙,让吴国太给孙权施压" << endl;
}
//实际策略GivenGreenLigh
class GivenGreenLigh : public IStrategy
{
public:
GivenGreenLigh(){}
~GivenGreenLigh(){}
void Operator();
};
void GivenGreenLigh::Operator()
{
cout << "求吴国太给绿灯,放行" << endl;
}
//使用锦囊包装策略
class CContext
{
public:
CContext(IStrategy* mistrategy)
{
this->m_Istrategy = mistrategy;
}
~CContext()
{
delete this->m_Istrategy;
}
void Oper()
{
this->m_Istrategy->Operator();
}
private:
IStrategy* m_Istrategy;
};
int main()
{
CContext* p_context;//定义一个锦囊
p_context = new CContext(new BackDoor());
p_context->Oper();
p_context = new CContext(new GivenGreenLigh());
p_context->Oper();
return 0;
}