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;
}
相关推荐
DaphneOdera176 分钟前
Git Bash 配置 zsh
开发语言·git·bash
Code侠客行12 分钟前
Scala语言的编程范式
开发语言·后端·golang
lozhyf32 分钟前
Go语言-学习一
开发语言·学习·golang
dujunqiu42 分钟前
bash: ./xxx: No such file or directory
开发语言·bash
爱偷懒的程序源44 分钟前
解决go.mod文件中replace不生效的问题
开发语言·golang
日月星宿~1 小时前
【JVM】调优
java·开发语言·jvm
捕鲸叉1 小时前
Linux/C/C++下怎样进行软件性能分析(CPU/GPU/Memory)
c++·软件调试·软件验证
2401_843785231 小时前
C语言 指针_野指针 指针运算
c语言·开发语言
Jacob程序员1 小时前
leaflet绘制室内平面图
android·开发语言·javascript
AitTech2 小时前
C#编程:List.ForEach与foreach循环的深度对比
开发语言·c#·list