命令模式解释器模式课程.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解释器模式概述? INTERPRETER模式是什么 解释器模式 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 INTERPRETER模式是什么 解释器模式 结构图 为什么要用? 用解释器模式的好处 可以方便地实现一个简单的语言 易于改变和扩展文法 实现文法较为容易 好处 如何使用? 文法规则 文法规则 1 + 2 + 3 – 4 + 1 “::=”表示“定义为” “|”表示“或” “{”和“}”表示“组合” “*”表示“出现0次或多次” expression ::= value | operation operation ::= expression + expression | expression - expression value ::= an integer //一个整数值 Part 1 Part 1 Part 2 Part 3 Part 4 * Part 2 Part 1 Part 2 Part 3 Part 4 * Part 3 Part 1 Part 2 Part 3 Part 4 * Part 4 Part 1 Part 2 Part 3 Part 4 * 设计模式之 命令模式 姓名:潘玲 学号:2014124052 目录页 CONTENTS PAGE P3.该怎么用 P4.存在的不足 P1.命令模式的概述 P2.为什么要用 命令模式概述? COMMAND模式是什么 命令模式 分析 A 相同的开关可以通过不同的电线来控制不同的电器 B 开关 ——请求发送者 C 电灯 ——请求的最终接收者和处理者 D 开关和电灯之间并不存在直接耦合关系,它们通过电线连接在一起,使用不同的电线可以连接不同的请求接收者 COMMAND模式是什么 COMMAND模式是什么 命令模式 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 COMMAND模式是什么 命令模式 结构图 waiter command barbecuerman bakemuttoncommand 为什么要用? 用命令模式的好处 新的命令可以很容易地加入到系统中,符合开闭原则 降低了系统的耦合度 为请求的撤销(Undo)和恢复(Redo)操作提供了一种设计和实现方案 好处 如何使用? 烧烤摊.vs.烧烤店 案例 烧烤摊 行为请求者与行为实现着的紧耦合 烧烤摊上老板一个人负责收钱、烤肉、还要记下谁先来、谁要了多少 烧烤摊的老板与顾客之间联系比较紧密。 烧烤摊的类图: 客户端类 +烤羊肉() +烤鸡翅() 烤肉者 烤肉摊 烧烤摊的实现程序: //烧烤者 Public class barbecuerman { public void bakemutton( )//烤羊肉 { console.write(“烤羊肉串”); public void bakechichenwing( )//烤鸡翅 {console.write(烤鸡翅”); } 客户端调用: void main( ) { barbecuerman boy=new barbecuerman(); boy.bakemutton(); boy.bakemutton(); boy.bakechikenwing(); boy.bakechikenwing(); Console.Read(); } 存在的问题:程序耦合 比较紧,当用户多了以后 就变得比较混乱了。 行为请求者和行为实现者 的紧耦合。 改进烧烤店 优化 烧烤店—雇用服务员 (1)顾客—烤肉请求者 (2)烤肉师傅—烤肉的实现着 由于有了服务员,顾客只需把需求告诉服务员,由服务员记录顾客的请求,然后通知烤肉师傅做。这样,顾客与烤肉师傅没有直接交流。 顾客有撤销订单行为也可告诉服务员。 这就实现了行为请求者和行为实现着的松耦合。 松耦合设计 实例程序 抽象命令类、只需确定烤肉者 public class command { protected barbecuerman receiver; public command(barbecuerman receiver) { this.receiver=receiver;} //执行命令 public void excutecommand( ); } 实例程序 具体命令类 //烤羊肉串命令、执行具体的行为 class bakemuttoncommand: command { publ

文档评论(0)

金不换 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档