一、介绍
请求(request)以命令的形式包裹在对象中(command),并传给调用对象(这里的main函数)
行为请求者与行为实现者解耦,将一个请求(行为)封装为一个对象,从而使你可用不同的请求对客户进行参数化
二、作用
对请求排队,记录请求日志,以及支持可撤销操作
三、示例
// 请求
class Request {
public:
void Get() {
cout << "GET METHOD" << endl;
}
void Post() {
cout << "POST METHOD" << endl;
}
};
// 命令
class Command {
public:
// 定义指向类中函数的函数指针
typedef void(Request:: *Method)();
Command(Request *request, Method method):request(request),method(method) {}
void execute() {
(request->*method)();
}
private:
Request *request;
Method method;
};
int main() {
Command *command1 = new Command(new Request, &Request::Get);
Command *command2 = new Command(new Request, &Request::Post);
command1->execute();
command2->execute();
}