设计模式命令模式(Command).pptxVIP

  • 19
  • 0
  • 约6.25千字
  • 约 30页
  • 2017-04-09 发布于江苏
  • 举报
设计模式命令模式(Command)

设计模式(Design Pattern) 张凯 副教授 计算机学院 软件工程系 问题(Problem) 路边摊VS餐厅 问题(Problem) 路边摊VS餐厅 问题(Problem) 路边摊VS餐厅 老板,我这有两串,少了一串! 老板,我的三串应该是不辣的啊! 老板,我先付的钱,你怎么给她了? 老板,这串还不熟啊,再烤一下! 老板,我在这等了半天,钱都给了,你不理我,我不要了,退钱! 问题(Problem) 去烧烤店吃烧烤, 如果客人直接和烧烤的伙计打交道, 则烧烤的伙计将直接面对各种各样的客户各种各样的需求,各种各样的口味, 而且有的客人会因为等不及而走掉,但是伙计却不知道......最后烧烤伙计手忙脚乱. 问题(Problem) 那么,我们增加一个服务员,负责接待客户,那么客人将向服务员点菜;服务员手中拿着烧烤订单纸,客人只要把自己想要的东西写上,并注明需要的口味,服务员需按客人点餐的顺序把订单放在烧烤伙计的窗台上; 如果有客人退单了,那么她只需要把订单抽掉就行了; 烧烤伙计则只需要看订单安心做烧烤就行了. 问题(Problem) 主要内容 命令模式(Command) 模式动机 模式名称:命令模式(Command) 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 命令模式(Command) 模式定义 命令模式(Command Pattern):将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。 命令模式(Command) 模式结构 命令模式(Command) 参与者 Command: 抽象命令类 ConcreteCommand: 具体命令类 Invoker: 调用者 Receiver: 接收者 Client:客户类 命令模式(Command) //烤肉串者 public class Barbecuer { public void BakeMutton() { Console.WriteLine(烤羊肉串!); } public void BakeChickenWing() { Console.WriteLine(烤鸡翅!); } } 命令模式(Command) //抽象命令 public abstract class Command { protected Barbecuer receiver; public Command(Barbecuer receiver) { this.receiver = receiver; } //执行命令 abstract public void ExcuteCommand(); } //烤羊肉串命令 class BakeMuttonCommand : Command { public BakeMuttonCommand(Barbecuer receiver) : base(receiver) { } public override void ExcuteCommand() { receiver.BakeMutton(); } } 命令模式(Command) //服务员 public class Waiter { private Command command; //设置订单 public void SetOrder(Command command) { mand = command; } //通知执行 public void Notify() { command.ExcuteCommand(); } }

文档评论(0)

1亿VIP精品文档

相关文档