设计模式-命令模式

在发送者类与接收者类发送消息以及接受消息之间,可能并不能直接进行对话,或者说发送者不关系接收者是谁,而接收者也不需要发送者是谁。这样的一个关系特别像一个老板说,我不关系你怎么做,我只关系这件事的能不能成功。老板只负责发送命令,而并不关系过程,只关心结果。因此,这样的一个运行机制可以通过命令模式进行实现

 

1. Reciver类的编写

class Reciver{
public:
    void action(){
        cout << "reciver接受到了命令";
    }
};

2. Command接口的编写

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

class ConcerteCommand:public Command{
private:
    Reciver* reciver;
public:
    ConcerteCommand(){};
    ConcerteCommand(Reciver* reciver):reciver(reciver){};
    void call(){
        if(!reciver){
            reciver = new Reciver();
        }
        reciver->action();
    }
};

3. Sender类的编写

class Sender{
private:
    Command* command;
public:
    Sender():command(nullptr){};
    Sender(Command* command):command(command){};
    void send(){
        if(!command){
            command = new ConcerteCommand();
        }
        cout << "Sender发送了命令" << endl;
        command->call();
    }
};

4. 主函数测试

int main(){
    Reciver* revier = new Reciver();
    ConcerteCommand* command = new ConcerteCommand(revier);
    Sender* sender = new Sender(command);
    sender->send();
    return 0;
}

5. 参考文献

(1) 设计模式-命令模式 C++实现_MachineChen的博客-CSDN博客_c++命令模式 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值