命令模式

来源:互联网 发布:国家税务局网络发票 编辑:程序博客网 时间:2024/06/06 02:35
 

#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();                      //传达者发出命令
}

原创粉丝点击