设计模式:生活中的命令模式

将命令模式类比到日常生活中,可以想象一个餐厅的运作过程。在这个类比中,顾客点菜的过程就像是发出一个命令,而厨师则是执行命令的接收者。

角色类比

  • 顾客(Client):下达命令。他们决定要什么菜,并通知服务员。
  • 服务员(Invoker):接收命令,并传递给厨师。服务员不需要知道菜怎么做,他们只负责确保命令被正确记录并传达给厨师。
  • 命令单(Command):服务员记录顾客点的菜的纸条或电子设备。每个命令单都会详细说明所需的菜品和顾客的特殊要求。
  • 厨师(Receiver):执行命令。他们根据命令单上的内容准备菜品。
  • 菜品(Action):命令的结果,也就是厨师根据命令单准备的食物。

过程类比

想象你走进一家餐厅,坐下后开始点菜(这是你发出的命令)。服务员(Invoker)将你的选择写在命令单上或输入到电子系统中。这个命令单就是一个具体的命令(ConcreteCommand),它包含了所有必要的信息,以便厨师(Receiver)能够准备菜品。

当服务员将命令传递给厨房后,厨师开始根据命令单上的指示准备食物。在这个过程中,即使服务员不在厨房,厨师也能独立完成任务,因为他们有明确的指示。

在某些情况下,顾客可能会改变主意,比如取消或更改订单。如果命令尚未执行,服务员可以简单地撤销或修改命令单上的内容,这类似于命令模式中的撤销(undo)操作。

基于餐厅类比的命令模式,我们可以将其转换成代码。以下是一个简化的Java示例,展示了如何实现命令模式:

// Command接口
public interface OrderCommand {
   
    void execute();
}

// ConcreteCommand:制作汉堡的命令
public class BurgerOrder implements OrderCommand {
   
    private Chef chef;

    public BurgerOrder(Chef chef) {
   
        this.chef = chef

相关推荐

  1. 设计模式生活命令模式

    2024-04-11 11:58:06       14 阅读
  2. 设计模式生活组合模式

    2024-04-11 11:58:06       17 阅读
  3. 设计模式生活状态模式

    2024-04-11 11:58:06       12 阅读
  4. 设计模式生活观察者模式

    2024-04-11 11:58:06       20 阅读
  5. 设计模式生活迭代器模式

    2024-04-11 11:58:06       17 阅读
  6. 设计模式生活责任链模式

    2024-04-11 11:58:06       15 阅读

最近更新

  1. vue项目在window编译打包没问题linux编译打包报错

    2024-04-11 11:58:06       0 阅读
  2. vue 环境变量那些事

    2024-04-11 11:58:06       0 阅读
  3. R语言学习笔记5-数据结构-多维数组

    2024-04-11 11:58:06       0 阅读
  4. Mongodb地理信息数据查询

    2024-04-11 11:58:06       1 阅读
  5. uniapp实现图片懒加载 封装组件

    2024-04-11 11:58:06       1 阅读
  6. 有关区块链的一些数学知识储备

    2024-04-11 11:58:06       1 阅读
  7. MICCAI 2023 List of Papers

    2024-04-11 11:58:06       1 阅读

热门阅读

  1. 【免安装的MATLAB--MATLAB online】

    2024-04-11 11:58:06       14 阅读
  2. 数据结构与算法 — 贪心算法

    2024-04-11 11:58:06       13 阅读
  3. Python:迭代器

    2024-04-11 11:58:06       16 阅读
  4. 【云开发笔记No.20】中台架构的分类

    2024-04-11 11:58:06       17 阅读
  5. 【RabbitMQ】RabbitTemplate类无法自动注入

    2024-04-11 11:58:06       16 阅读
  6. 【架构五】会话、事务、进程

    2024-04-11 11:58:06       17 阅读
  7. Flutter 中 AutomaticKeepAliveClientMixin 的介绍及使用

    2024-04-11 11:58:06       19 阅读
  8. 设计模式(015)行为型之模板方法模式

    2024-04-11 11:58:06       18 阅读
  9. Android bug Unresolved reference: BR

    2024-04-11 11:58:06       15 阅读