第四章 命令模式.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 命令模式 一 、 概述 命令模式中,提出请求的对象为请求者,被请求的对象为接收者。 命令模式的核心就是使用命令对象来封装方法调用,即将请求者的请求:“接收者调用方法”封装到命令对象的一个方法中。 当一个对象请求另一个对象调用方法来完成某项任务时,只需和命令对象打交道,即让命令对象调用封装了“请求”的那个方法即可。 命令模式----封装方法调用 二、命令模式的结构与使用 模式的结构的描述与使用 通过一个简单的问题来描述命令模式中所涉及的各个角色。 问题:“一个指挥官请求(命令)三连偷袭敌人” 三、命令接口中的撤销方法 命令接口除了封装“请求”的execute( )方法,还可以提供撤销“请求”的方法undo( ) undo( )能撤销execute( )方法的执行效果 举例说明具体命令中如何实现undo( )方法 请求者请求在硬盘建立目录,请求成功后,还可以撤销请求。 设计的类图 1、接收者 MakeDir import java.io.*; public class MakeDir{ public void createDir(String name){ File dir=new File(name); dir.mkdir(); //创建目录 } public void deleteDir(String name){ File dir=new File(name); dir.delete(); //删除目录 } } 2、命令接口 public interface Command { public abstract void execute(String name); public abstract void undo(); } 3、具体命令 import java.util.*; public class ConcreteCommand implements Command{ ArrayList<String> dirNameList; MakeDir makeDir; ConcreteCommand(MakeDir makeDir){ dirNameList=new ArrayList<String>(); this.makeDir=makeDir; } public void execute(String name) ; public void undo() ; } execute ( )和undo( )方法 public void execute(String name){ makeDir.createDir(name); dirNameList.add(name); } public void undo( ){ if(dirNameList.size( )>0){ int m=dirNameList.size( ); String str=dirNameList.get(m-1); makeDir.deleteDir(str); dirNameList.remove(m-1); } else System.out.println("没有需要撤消的操作"); } 4、请求者 public class RequestMakedir{ Command command; public void setCommand(Command command){ mand=command; } public void startExecuteCommand(String name){ command.execute(name); } public void undoCommand(){ command.undo(); } } 5、应用程序 public class Application{ public static void main(String args[]){ MakeDir makeDir=new MakeDir(); //创建接收者 Command command=new ConcreteCommand(makeDir); RequestMakedir askMake

文档评论(0)

44488569 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5101121231000003

1亿VIP精品文档

相关文档