当前位置:   article > 正文

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

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

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

角色类比

  • 顾客(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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/426272
推荐阅读
相关标签
  

闽ICP备14008679号