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;
}
相关推荐
狄加山67519 分钟前
Qt模型-视图架构
开发语言·qt
Aphelios38031 分钟前
TaskFlow开发日记 #1 - 原生JS实现智能Todo组件
java·开发语言·前端·javascript·ecmascript·todo
odoo中国42 分钟前
Python 深度学习实战 第1章 什么是深度学习&代码示例
开发语言·python·深度学习
pumpkin845141 小时前
Rust 是如何层层防错的
开发语言·rust
星辰瑞云1 小时前
scala-集合3
开发语言·后端·scala
无名之逆1 小时前
[特殊字符] Hyperlane:为现代Web服务打造的高性能Rust文件上传解决方案
服务器·开发语言·前端·网络·后端·http·rust
Dream it possible!1 小时前
CCF CSP 第35次(2024.09)(1_密码_C++)(哈希表)
c++·散列表·ccf csp·csp
studyer_domi1 小时前
Matlab 调制信号和fft变换
开发语言·计算机视觉·matlab
_yingty_1 小时前
Go语言入门-反射4(动态构建类型)
开发语言·笔记·后端·golang
旧时光林2 小时前
蓝桥杯 分解质因数(唯一分解定理)
数据结构·c++·算法·蓝桥杯·模拟·枚举