设计模式-命令模式

命令模式将每个行为(命令)封装成类,
#include
#include
using namespace std;

将行为封装的接口虚类
class Command{
public:
virtual void execute()=0;
virtual ~Command(){};
};

具体的两种执行命令的行为类
class ConcreteCommand1:public Command{
public:
virtual void execute(){
cout<<“command1 is run”;
}
virtual ~ConcreteCommand1(){};
};
class ConcreteCommand2:public Command{
public:
virtual void execute(){
cout<<“command2 is run”;
}
virtual ~ConcreteCommand2(){};
};

将每种行为加入一个序列,并执行
class MacroCommand{
public:
void add(Command* cmd){
Commands.push_back(cmd);
}
void run(){
for(auto &cmd:Commands){
cmd->execute();
}
}
private:
vector<Command*>Commands;
};

int main(){
ConcreteCommand1* command1=new ConcreteCommand1();
ConcreteCommand2 command2;

MacroCommand macro;
macro.add(command1);
macro.add(&command2);

macro.run();
return 0;
}
模式定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
此模式可以将一个类的函数行为封装成类,比如用Command接收一个类指针,通过每个具体行为类接收一个指针构造Command构造函数,再在具体行为类中通过指针调用想抽离的行为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值