2016 - 2025

感恩一路有你

命令模式:解决包子店顺序问题

浏览量:4276 时间:2024-02-01 23:29:55 作者:采采

在小编家附近有一家包子店,每天早上都有很多人来买早点。但是老板经常糊涂,总是忘记先后顺序,也不记得客人的点单内容。为了解决这个问题,我们可以使用设计模式中的“命令模式”。

1. 命令模式

命令模式(Command)将一个请求封装成一个对象,通过不同的请求来参数化客户端,并且可以对请求进行排队或记录请求日志,还可以提供撤销和恢复功能。

下面是命令模式的UML类图:

2. 包子店角色分配

在我们的包子店中,我们需要两个角色:服务员兼收钱的(Waiter)和拿包子打豆浆的(Baker)。假设只有两种工作:拿包子(Baozi)和打豆浆(Doujiang),这两种工作对应了命令模式中的ConcreteCommand角色。

首先,我们创建Baker类,用于执行具体的工作。

3. 抽象命令类

我们创建一个抽象命令类(Command),其中包含一个Baker实例、构造函数和execute方法。

4. 具体命令类

接下来我们创建具体的命令类,DoujiangCommand和BaoziCommand,它们继承自Command类。同时,我们重写了toString方法,方便打印日志。

5. 服务员类

创建Waiter类,用于接收客户需求并通知Baker送食物。

  • Listlt;Commandgt; commands:用于存储客户的需求
  • setOrder:客户点单
  • cancelOrder:客户取消之前的点单
  • notifyBaker:通知Baker送食物

6. 测试函数

最后,我们创建一个测试函数来运行程序并查看结果。

通过使用命令模式,我们成功解决了包子店的顺序问题。现在,每个客人的需求都被记录下来,可以按照先后顺序进行制作,并且客人可以随时更改或取消他们的订单。

设计模式在实际编程中有着广泛的应用,不仅可以提高代码的可读性和可维护性,还可以解决实际问题带来的困扰。希望这篇文章对于理解命令模式有所帮助!

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。