c++开发模式,命令模式

将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。

关键代码:定义三个角色:1、received 真正的命令执行对象 2、Command 3、invoker 使用命令对象的入口

使用场景:认为是命令的地方都可以使用命令模式,比如: 1、GUI 中每一个按钮都是一条命令。 2、模拟 CMD。

cpp 复制代码
#include <iostream>
using namespace std;

class Reciever {
public:
    void Action() {
        cout << "Reciever::Action..." << endl;
    }
};

class Command {
public:
    virtual ~Command() { }
    virtual void Excute() = 0;
};

class ConcreteCommand :public Command {
public:
    ConcreteCommand(Reciever *rev) {
        _rev = rev;
    }

    void Excute() {
        _rev->Action();
    }
private:
    Reciever *_rev;
};

class Invoker {
public:
    Invoker(Command* cmd) {
        _cmd = cmd;
    }
    void Invoke() {
        _cmd->Excute();
    }

private:
    Command *_cmd;
};

int main() {
    Reciever *rev = new Reciever();
    Command* cmd = new ConcreteCommand(rev);
    Invoker *inv = new Invoker(cmd);
    inv->Invoke();

    delete rev;
    delete cmd;
    delete inv;

    return 0;
}
相关推荐
IvanCodes5 小时前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
aramae7 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
qq_2518364579 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
郑州光合科技余经理10 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手10 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
qq_1998868711 小时前
第8板块·第2节:统一内存的高级特性与性能调优
c++·人工智能·gpu算力·cuda
+VX:Fegn089511 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计
阿里嘎多学长11 小时前
2026-09-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
2401_8390805412 小时前
C++常见八股
数据结构·c++·算法
qq_1998868712 小时前
第6板块 第2节 CUDA运行时API与驱动API 核心笔记
c++·人工智能·gpu算力