欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年设计模式之command模式和state模式,调停者模式,门面模式文件 .pdf

    • 资源ID:30540333       资源大小:53.60KB        全文页数:6页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年设计模式之command模式和state模式,调停者模式,门面模式文件 .pdf

    1. Command 模式: 简单来说就是每一个请求过来,都有一个事物去处理。在最初的设计模式书当中,command 模式最主要的功能是用来实现undo(撤销)功能的。首先是抽象类Command:package mand; /提供一个抽象类来规定方法的名称为execute和undopublicabstractclass Command publicabstractvoid execute(); publicabstractvoid unDo(); 两个具体的类的实现:HugCommand 和 ShoppingCommand package 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); Override名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - publicvoid 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) this. 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 Listcommands = new ArrayList(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - public String getName() returnname ; publicvoid setName(String name) this. name = name; publicvoid pursue(MM mm) publicvoid doSomeThing() /boy提供一个方法,把命令添加到boy 的arraylist当中publicvoid addCommand(Command c1) this. commands .add(c1); /把commands 里面所有的命令拿出来,每个都执行。publicvoid executeCommands() for(Command c : commands ) c.execute(); /undo的时候,要用另外一个list来记录, boy 已经执行了哪些command 。/在undo 的时候,就根据堆栈的方式,一条一条的undo 。/使用堆栈的理由,就是要先把最后命令undo ,然后再返回去。publicvoid undoCommands() / 思想:1.给出一个抽象类或接口,把command 需要方法准备好。2.给出几个不同的具体实现,各种不同的command。3.命令者当中,给被命令者添加command,并可以要求被命令者执行。4.被命令者有个arraylist,用来存放需要执行的方法。被命令者提供addCommand 方法,和executeCommands,undoCommands方法供命令者使用。5.个人感觉有点像,observer模式。被监听者同样提供一个arraylist,来添加监听类。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - 2. State 模式State 模式就是说,一个类的动作可以根据他不同的状态来执行不一样的代码。其实说白了就是把 if 语句用设计模式来实现了。首先是抽象类:package com.bjsxt.dp.state; /定义抽象类,来规定方法的名称publicabstractclass MMState publicabstractvoid smile(); publicabstractvoid cry(); publicabstractvoid say(); 两个不同的状态: happy和 unhappy package com.bjsxt.dp.state; publicclass MMHappyState extends MMState Overridepublicvoid cry() /happy Overridepublicvoid say() /hou mummy Overridepublicvoid smile() /:) package com.bjsxt.dp.state; publicclass MMUnHappyState extends MMState Override名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - publicvoid cry() /unhappy Overridepublicvoid say() /hou papa Overridepublicvoid smile() /:( 关键在于使用者的时候调用:package com.bjsxt.dp.state; publicclass MM private String name ; /mm 的state作为一个成员变量, 可以有不同的状态MMHappyState,MMUnHappyStateprivate MMState state1 = new MMHappyState(); private MMState state2 = new MMUnHappyState(); public String getName() returnname ; publicvoid setName(String name) this. name = name; /调用了 MMHappyState的smilepublicvoid smile() state1.smile(); /调用了 MMHappyState的crypublicvoid cry() state1.cry(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - /调用了 MMHappyState的saypublicvoid say() state1.say(); 思想:1.首先一个抽象类state来定义方法的名字。2.可以有不同的,多个state 的子类来表示不同的状态。3.具体是使用什么状态,是由使用者来指定。如果使用者选择的是happy,所有的方法都是 happy 的状态。如果使用者选择的是unhappy,所有的方法都是unhappy 的状态。4.其实质就是一个if 语句(面向过程的编程): if ( MM.state=happy ) 。 。 。 。 。 。 。 。If(MM.state=unhappy ) 。 。 。 。 。 。 。 。5.其实质就是一个多态的引用。给出一个抽象类state 的引用,去指向不同的状态:private MMState state1 = new MMHappyState(); private MMState state2 = new MMUnHappyState(); 3. Mediator 调停者(中介者)模式通过一个mediator来调停不同的类之间的关系,所有的类都不需要互相交互,他们都和mediator打交道。所有的类都不直接和其他的类打交道。 Mediator是在系统的内部。4. Fa?ade模式(大管家模式)Fa?ade模式和 mediator模式思想一样,但是fa?ade是面向系统外部的,而不是在系统内部的。 使用者不和系统当中除了门面接口以外的所有的类打交道,而是通过这个门面接口类来调度和处理系统内部的复杂逻辑,使用者不需要知道这个系统内部的细节,由这个fa?ade门面接口来执行统一的调配和处理。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -

    注意事项

    本文(2022年设计模式之command模式和state模式,调停者模式,门面模式文件 .pdf)为本站会员(Q****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开