#include <iostream.h>
//命令模式 -----
//通过一个传达者将各种操作传达到具体的实施者
//这种模式中命令包含了实施者或者说命令的操作引起实施者的操作
//这是一种分层结构,上层是命令,下层是实施者
//各种操纵单独生成类并有共同的抽象基类
class RealExe //真正实施者
{
public:
RealExe(){}
virtual ~RealExe(){}
public:
virtual void ExeCommand()
{
cout << "执行了点火命令" << endl;
}
};
class Command //命令由客户发出
{
protected:
RealExe *realExe;
public:
Command(){}
Command(RealExe *realExe)
{
this->realExe = realExe;
}
virtual ~Command(){}
public:
virtual void SetRxe(RealExe *realExe)
{
this->realExe = realExe;
}
virtual void ExeCommand() = 0;
};
class Fire : public Command
{
public:
Fire(RealExe *real):Command(real){}
virtual ~Fire(){}
public:
virtual void ExeCommand() //命令执行即是实施者执行 命令->实施者
{
this->realExe->ExeCommand();
}
};
class Transfer //命令传达者
{
private:
Command *command;
public:
Transfer(){}
virtual ~Transfer(){}
public:
void SetCommand(Command *command) //接收命令
{
this->command = command;
}
void SendCommand() //发送命令
{
this->command->ExeCommand();
}
};
void main()
{
RealExe *a = new RealExe(); //真正实施者事先存在但客户不须知道它的存在
Transfer *t = new Transfer(); //传达者事先存在
Command *com = new Fire(a); //客户发生命令
t->SetCommand(com); //传达者接收命令
t->SendCommand(); //传达者发出命令
}