十分钟学会一个设计模式---行为模式---命令模式

106 阅读1分钟

一、介绍

请求(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();
}