设计模式之7 command模式和state模式,调停者模式,门面模式.docx

设计模式之7 command模式和state模式,调停者模式,门面模式.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式之7 command模式和state模式,调停者模式,门面模式

Command模式: 简单来说就是每一个请求过来,都有一个事物去处理。在最初的设计模式书当中,command模式最主要的功能是用来实现undo(撤销)功能的。首先是抽象类Command:package mand;//提供一个抽象类来规定方法的名称为execute和undopublicabstractclass Command {publicabstractvoid execute();publicabstractvoid unDo();}两个具体的类的实现:HugCommand和ShoppingCommandpackage mand;publicclass HugCommand extends Command {//都实现抽象类command当中的两个方法。execute()和undo()@Overridepublicvoid execute() {System.out.println(hug);}@Overridepublicvoid unDo() {System.out.println(open your arms);}}package mand;publicclass ShoppingCommand extends Command {//都实现抽象类command当中的两个方法。execute()和undo()@Overridepublicvoid execute() {System.out.println(zoo);}@Overridepublicvoid unDo() {System.out.println(undo zoo);}}命令者类:当有order方法,其中调用了被命令者(boy)的addCommand方法,用来给boy添加任务:各种command。package mand;publicclass MM {private String name;public String getName() {returnname;}publicvoid setName(String name) { = name;}//在order当中可以有多个command, c1,c2...publicvoid order(Boy b) {Command c1 = new ShoppingCommand();//调用了boy当中的addCommand方法,把c1,c2都添加到他的arraylist当中去b.addCommand(c1);Command c2 = new HugCommand();b.addCommand(c2);b.executeCommands();}}被命令者类:package mand;import java.util.ArrayList;import java.util.List;publicclass Boy {private String name;//用一个arraylist来存放命令列表private ListCommand commands = new ArrayListCommand();public String getName() {returnname;}publicvoid setName(String name) { = name;}publicvoid pursue(MM mm) {}publicvoid doSomeThing() {}//boy提供一个方法,把命令添加到boy的arraylist当中publicvoid addCommand(Command c1) {mands.add(c1);}//把commands里面所有的命令拿出来,每个都执行。publicvoid executeCommands() {for(Command c : commands) {c.execute();}}//undo的时候,要用另外一个list来记录,boy已经执行了哪些command。//在undo的时候,就根据堆栈的方式,一条一条的undo。//使用堆栈的理由,就是要先把最后命令undo,然后再返回去。publicvoid undoCommands() {//}}思想:给出一个抽象类或接口,把command需要方法准备好。给出几个不同的具体实现,各种不同的command。命令者当中,给被命令者添加command,并可以要求被命令者执行。被命令者有个arraylist,用来存放需要执行的方法。被命令者提供addCommand方法,和executeCommands,undoCommands方法供命令者使用。个人感觉有点像,observer模式。被监听者同样提供一个arraylist,来添加监听类。State模式State模式就是说,一个类的动作可以根据他不同的状态来执行不一样的代码。其实说白了就是把

文档评论(0)

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

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

1亿VIP精品文档

相关文档