您的位置:首页 > 编程语言 > C语言/C++

c++设计模式之命令模式

2016-12-11 13:15 453 查看
命令模式将"请求"封装成对象, 以便使用不同的请求, 队列, 或者日志来参数化其他对象. 命令模式也支持可撤销的操作.

命令模式将发出请求的对象和执行请求的对象解耦, 在被解耦的两者之间通过命令对象进行沟通

命令模式的用途: 队列请求, 日志请求...



#ifndef Command_h
#define Command_h

class Receiver // 命令接收者
{
public:
void action()
{
printf("Receiver action");
}
};

class Command // 命令抽象接口
{
public:
Command(Receiver *r) : receiver(r) { }
virtual void excute() = 0; // 执行命令
protected:
Receiver *receiver;
};

class ConcreteCommand : public Command
{
public:
ConcreteCommand(Receiver *r) : Command(r) { }
virtual void excute()
{
receiver->action();
}
};

class Invoker // 调用者
{
public:
void action(Command *c)
{
c->excute();
}
};

#endif


测试

#include <iostream>

#include "Command.h"

int main(int argc, char **argv)
{
Receiver receiver;
ConcreteCommand command(&receiver);
Invoker invoker;
invoker.action(&command);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息