Command(命令)模式..docx

上传人:李司机 文档编号:7213602 上传时间:2024-06-29 格式:DOCX 页数:6 大小:33.65KB
返回 下载 相关 举报
Command(命令)模式..docx_第1页
第1页 / 共6页
Command(命令)模式..docx_第2页
第2页 / 共6页
Command(命令)模式..docx_第3页
第3页 / 共6页
Command(命令)模式..docx_第4页
第4页 / 共6页
Command(命令)模式..docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《Command(命令)模式..docx》由会员分享,可在线阅读,更多相关《Command(命令)模式..docx(6页珍藏版)》请在三一办公上搜索。

1、设计模式-Command(吩咐)模式GoFt将一个恳求封装为一个对象,从而使你可用不同的恳求对客户进行参数华:对恳求排队或记录恳求日志,以及支持克撤销的操作。在网上查找COmmand模式的相关资料,大多都是关于用户界面的。可能和GoF的先入为主有关系,在GoF的书中,四位作者举/个文本编辑器的例子.Command模式通过将恳求本身变成一个对象来使工具箱对象可向未指定的应用对象提出恳求。这个对象可被存储并像其他对象一样被传递。记得以前在设计模式精解的读书笔记中学习了几条阅历,其中条是:留意封装改变点。在Command模式中就是对改变点的典型封装在Command模式中有一个关键的抽象类,一般人们命

2、名为Command类。他定义了一个执行操作的接口。它有一个抽象的execute操作。具体的Command子类(维承自Command的具体类)将接收者(ReCeiver类)作为其一个事例变量,并实现execute操作,指定接收者实行的动作。而接收者有执行该恳求所须要的具体信息“卜面举个例子:先定义关键的COmmand抽敞类(这里也可以用接口):packageCommand;publicabstractclassCommandEE(protectedReceiverreceiver;publicCommand(Receiverreceiver)(this.receiver=receiver;卜en

3、dCommand(.)Iabstractpublicvoideecute();Il-endabstractclassCommand再维承一个具体类rpackageCommand;publicclassConcreteCommandextendsCommandCE(IpublicConcreteCommand(Receiverreceiver)endConcreteCommand(.)Ipublicvoideecute()recelver.action();1endeecute()endclassConcreteCommand定义Receiver%:packageCommand;publiccl

4、assReceiverEpublicvoidaction()HSystem.out.println(Recelver.Actlon();endAction()I1)edclassReceiver定义,个InVOker炎:packageCommand;classInvokerEprivateCommandcommand;publicvoidSetCommand(Commandcommand)thismand=command;I-endSetCommand(.)publicvoideecuteCommand()EpublicclassProgrammerImplementsCommandpubli

5、cvoideecute()(/doprogrammersCOEmondpublicclassPolitiaanImplementsCommandpublicvoideecute()(/doPoliticianscommand根相通常做法,我们就可以f脆闻H这三个Command,位是运用Command模式,我们安格也们的装起来,扔到黑盒子IJSt里去:publicclassproducer(publicstatic1.istproduceRequests()1.istqueue=newArray1.ist();qucuc.add(newDomcsbcngi11ccr();queue.add(ne

6、wPobtKJanQ);queue.add(newProgrammer();returnqueue;这:个吩咐进入1.iSt中后,己锐失去了其外表特征,以后再取出,也可傥无法落别出谛:是EngineeriftProgrammer了,行下面客户刑如何调用CommandHJ:publicclassTestCommandpublicstaticvoidmai(Stringargs)1.istqueue-Produccr.prodccRcqucsts();for(iteratorIt-queue.Iterator();t.hasNet();)客户病干竟利用execute方法,无需知退被调用杆的其;更多

7、类的力注多.(GH11mand)(),excte();由此可见,调用者珞本只和接Il打交道,不合只体实现交互,这也体现了一个原则,而对接口编程,这样,以后增加第四个具体吩咐时,就不必修改调用行TestCommand中的代码了.理籽了上面的代码的核心朦理,在送用中,就应当各人仃自己方法了,特殊是在加H分别调用名和J!伟吩咽上,有许多女现“江而的代码是运用“从1.iSt过一遍”的做法.这种做法只是为/演示.运用COmmand模式的个好理由还因为它健实现Und。功能.每个具体吩咐都可以记住它刚刚执行的动作,并且在须要时复原.CommandC式在界面设计中应用广泛JaVa的Swing中菜单吩咐都是运用Command模式,由于Java在界面设计的性能上还fj欠献,因此界而设计具体代码我们就不探讨,网络卜fji1多这样的示例.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号