餐厅的点菜过程如下面的UML顺序图所示,现采用命令(Command)模式来实现该场景。那么下面顺序图中,与命令模式中的类"Command"对应的类是(【Order】);与类Receiver对应的类是(【Cook】)。

命令模式是一种行为型设计模式,核心是将请求封装为独立的命令对象,实现请求发起者与执行者的解耦,它包含五大核心角色:一是Command(命令抽象),定义执行请求的接口,对应餐厅场景里的Order,可封装顾客的点菜请求;二是ConcreteCommand(具体命令),实现Command接口,绑定接收者并调用其对应操作;三是Receiver(接收者),负责执行与请求相关的具体业务逻辑,对应餐厅里的Cook,实际完成做菜这类核心操作;四是Invoker(调用者),负责触发命令执行,对应餐厅里的Waitress,传递订单并触发后续业务流程;五是Client(客户端),创建具体命令对象并指定其接收者,对应餐厅里的Customer,发起点菜请求并关联订单与厨师。命令模式适用于需要对请求进行排队、记录日志、支持撤销或重做的场景,比如办公软件的撤销操作、任务调度系统的任务编排等,通过对命令对象的持久化与管理,可灵活实现复杂的请求管控逻辑。
本题考察的是**设计模式中的命令模式(Command Pattern)**及其类角色识别。
命令模式是一种行为型设计模式,它将一个请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。在命令模式中,主要涉及四个角色:
Command(命令):定义执行操作的接口,通常封装了调用Receiver的方法。
ConcreteCommand(具体命令):实现Command接口,绑定一个Receiver对象并调用其相应操作。
Receiver(接收者):知道如何实施与执行一个请求相关的操作。
Invoker(调用者):要求该命令执行这个请求。
Client(客户):创建一个具体命令对象并设置它的接收者。
问题 1:
A选项 Cook:对应Receiver,负责实际执行操作,不是Command。
B选项 Customer:属于Client角色,负责创建命令并发出请求,不是Command。
C选项 Order:命令对象,封装了顾客的请求,是Command。
D选项 Waitress:对应Invoker角色,负责调用命令执行。
因此,C选项 Order 正确,对应命令模式中的 Command 类。
问题 2:
A选项 Cook:对应命令模式中的 Receiver,负责实际执行命令操作(做菜)。
B选项 Customer:属于Client,不是Receiver。
C选项 Order:是Command对象,不是Receiver。
D选项 Waitress:Invoker,不是Receiver。
因此,A选项 Cook 正确,对应命令模式中的 Receiver 类。
