收藏 分销(赏)

《设计模式22》-命令模式.ppt

上传人:二*** 文档编号:10298645 上传时间:2025-05-19 格式:PPT 页数:8 大小:154KB 下载积分:5 金币
下载 相关 举报
《设计模式22》-命令模式.ppt_第1页
第1页 / 共8页
本文档共8页,全文阅读请下载到手机保存,查看更方便
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,5.命令模式(Command Pattern),意图:,将一个请求(或动作、命令等)封装,这样的请求就可以带参数进行实例化了。因此,同一个请求,不同的参数,可以是不同的实现结果。,请求可能增加,请求可以是请求队列,请求可以被记录、撤销等。,同一个行为的参数变化,class Some,public:,void Func();,void Func(A*pa);,void Func(A*pa,int arg);,void Func(B*pb);,;,增加,Func(A,*pa,int,arg1,,,int,arg2);,2.,增加,Func(C,*pc),例,class Receiver;,class ReceiverA:public Receiver;,class ReceiverB:public Receiver;,class ReceiverC:public Receiver;,class ReceiverD:public ReceiverC;,class Requester,public:,virtual void DoAction1(ReceiverA*a);,virtualvoidDoAction1(ReceiverB*b);,virtualvoidDoAction2(ReceiverD*d);,;,问题:,1)增加新的ReceiverA2,怎么办?,2)同时增加新的RecieverD2,又怎么办?,3)增加一个新的Action,它是由DoAction1(ReceiverA*a)和,DoAction1(ReceiverB*b)顺序组成的,又怎么办?,4)需要对每个Action,都做日志记录,怎么办?,5)需要对每个Action,都可以做撤销操作,怎么办?,将Requester的DoAction及参数变化单独封装起来,:,class Requester,public:,virtual void DoAction(Command*comd),comd-Excute();,;,class CommandAction2,:public Command,public:,CommandAction2(ReceiverC*rec):receiver(rec),virtual void Excute(),receiver-DoSomething2();,private:,ReceiverC*receiver;,;,由Command区分Action及Receiver:,class Command,public:virtual void Excute()=0;,;,class CommandAction1,:public Command,public:,CommandAction1(Reciveiver*rec),:receiver(rec),virtual void Excute(),receiver-DoSomething1();,private:,Receiver*receiver;,;,队列(例如由两个Command组成的请求队列),class MacroCommod:public Command,public:,MacroCommand(Command*comand1,Command*command2),:cmd1(command1),cmd2(command2),virtual void Excute(),cmd1-Excute();,cmd2-Excute(),private:,Command*cmd1;,Command*cmd2;,;,命令模式结构,命令模式优缺点,好处:,容易构造一个命令队列,便于以日志形式记录命令的执行情况,保留并存储命令执行中的各种信息,可以实现命令的撤销和重做,便于增加新的命令,缺点:可能会有过多的具体命令类存在,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服