每周学点设计模式(3)——命令模式-java开发java经验技巧

每周学点设计模式(3)——命令模式-java开发java经验技巧

ID:30863028

大小:54.00 KB

页数:6页

时间:2019-01-03

每周学点设计模式(3)——命令模式-java开发java经验技巧_第1页
每周学点设计模式(3)——命令模式-java开发java经验技巧_第2页
每周学点设计模式(3)——命令模式-java开发java经验技巧_第3页
每周学点设计模式(3)——命令模式-java开发java经验技巧_第4页
每周学点设计模式(3)——命令模式-java开发java经验技巧_第5页
资源描述:

《每周学点设计模式(3)——命令模式-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、每周学点设计模式(3)——命令模式-JavaJT-发Java经验技巧每周学点设计模式(3)——命令模式木文作者:ImportNew・hejiani未经许口J,禁止转载!概述在面向对象编程中,命令模式属于行为型(behavior)设计模式,用于“行为发送者”与“行为接收者”Z间的解耦。(行为发送者为发起某个操作的对象,接收者为执行该操作请求的对象)。命令模式的结构如下图所示:命令模式结构图命令模式的常见使用场景有:•Java菜单项和按钮的动作处理•为宏(复合命令)提供支持(记录和回退的宏操作)•“u

2、ndo”操作•Java进度条•口志、请求队列等使用命令模式实现事务假定需要TCP端口连接的用于接受和处理用户请求事务的服务器,这些事务包含很多命令。如果使用switch语句在case屮调用每个命令,会导致程序耦合度增加,不符合面向对象设计思想。将这些命令封装为对象将请求者和接受者解耦,这样的设计更加合适。importjava,uti1.*;finalclassCommandReceiver{privateint[]c;privateCommandArgumenta;privateCommandRe

3、ceiver(){c=newint[2];}privatestaticCommandReceiveror=newCommandReceiver();publicstaticCommandRcccivcrgctllemdie(){returncr;}publicvoidsetCommandArgument(CommandArgumenta){this,a=a;}publicvoidmethAddO{c=a.getArguments();System,out.println(〃Theresultis〃

4、+(c[0]+c[l]));}publicvoidmethSubtract(){c=a.getArguments();System,out.println(/zTheresultis"+(c[0]-c[l]));}命令模式代码类图CommandReceiver是命令接收者角色,实现了所冇的命令处理方法,同时它作为单例实现。classCommandManager{privatcCommandmyCommand;publicCommandManager(CommandmyCommand){this.m

5、yCommand二myCommand;}publicvoidrunCommands(){myCommand.execute();}}CommandManager是调用者角色,它的私有变量myCommand传入TransactionCommandX'j象。当runCommands()被调用时,选择合适的TransactionCommand对象的方法。classTransactionCommandimplementsCommand{privateCommandReceivercommandreceiv

6、er;privateVectorcommandrmmelist,commandorgumentlist;privateStringcommandnamc;privateCommandArgumentcommandargument;privateCommandcommand;publicTransactionCommand(){this(nul1,null);ijpublicTransactionCommand(Vectorcommandnamelist,Vectorcominandargumen1

7、1ist){this,commandnamelist二commandnamelist;this.commandorgumentlist=commandorgumentlist;commandrcccivcr二CommandRcccivcr.gctlbndlc();}publicvoidexecute(){for(inti二0;i

8、ment二(CommandArgument)((commandargument1ist・get(i)));cominandreceiver.setCominandArgument(cominandargument);Stringclassname二commandname+〃Comniand〃;try{Classcis二Class.forNamc(classname);command二(Command)cis•ncwlnstancc();catch(Throwablee){Syste

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。