设计模式—命.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式--之-- 命令模式(行为型) 一个具体的例子 烧烤摊.vs.烧烤店 烧烤摊的老板与顾客之间联系比较紧密。 烧烤摊的类图: 一个具体的例子 烧烤摊的实现程序: //烧烤者 Public class barbecuerman { public void bakemutton( )//烤羊肉 { console.write(“烤羊肉串”); public void bakechichenwing( )//烤鸡翅 {console.write(烤鸡翅”); } 一个具体的例子 客户端调用: void main( ) { boy=new barbecuerman(); boy.bakemutton(); boy.bakemutton(); boy.bakechikenwing(); boy.bakechikenwing(); } 一个具体的例子 改进:引入服务员类 一个具体的例子 //抽象命令类、只需确定烤肉者 public class command { protected barbecuerman receiver; public command(barbecuerman receiver) { this.receiver=receiver;} //执行命令 public void excutecommand( ); } 一个具体的例子 具体命令类 //烤羊肉串命令、执行具体的行为 class bakemuttoncommand: command { public bakemuttoncommand(barbecuerman receiver):command(receiver) { } public void excutecommand() {receiver.bakemutton();} } 一个具体的例子 //烤鸡翅命令 class bakemuttoncommand: command { public bakemuttoncommand(barbecuerman receiver):command(receiver) { } public void excutecommand() {receiver.bakechikenwing();} } 一个具体的例子 服务员类 Public class waiter { private command acommand; //设置订单 public void setorder(command acommand) { mand=acommand;} //通知执行 public void notify() { command.excutecommand();} } 一个具体的例子 客户端: void main() { //准备工作 Barbecuer boy=new barbecuerman(); Command bakemuttoncommand1=new bakemuttoncommand(boy); Command bakechickenwingcommand1=new bakechickenwingcommand(boy); waiter girl=new waiter(); 一个具体的例子 //开门营业 girl.setorder(bakemuttoncommand1); girl.notify(); girl.setorder(bakechichenwingcommand1); girl.notify(); } 一个具体的例子 存在的问题: (1)不是用户点一个菜,服务员就跑去让厨师作; (2)万一鸡翅或羊肉没有了怎么办? (3)服务员如何记录客户消费的情况? (4)客户万一要取消消费怎么办? //服务员类 Public class Waiter {private IListcommand orders=new Listcommand(); //设置订单 If (command.Tostring()==“命令模式.BakeChickenWingCommand”) { console.Writeline(“服务员:鸡翅没有了,请点别的”);} else {orders.Add(command); Console.WriteLine(“增加订单:”+command.Tostring()+”时间:”+DateTime.Now.Tostring()); } //取消订单 Public void CancelOrder(Command command) { order.Remove

文档评论(0)

mv2323 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档