快餐模拟器应用
等级: 3-高级
快餐模拟了一个简单的外卖餐厅的运营,并旨在帮助开发者将他们对Promises和SOLID设计原则的知识付诸实践。
该应用模拟了一个外卖餐厅的客户下单并等待订单准备和交付到取餐台的过程。下单后,客户需要在订单宣布后再取走订单并前往用餐区。
构成这个应用的用户故事主要集中在四个不同的角色上:
- 用户 - 最终用户使用应用程序
- 客户 - 模拟客户
- 订单领取者 - 模拟订单领取者
- 厨师 - 模拟厨师
- 服务员 - 模拟服务员
这个应用有很多用户故事。不过不要担心。花时间不仅要勾勒出UI,还要构思不同行为者(角色)如何互动,并按照敏捷原则逐步构建应用程序。
约束条件
- 订单票可以表示为两种不同类型的承诺 - 其中一种是由服务员等待厨师准备的订单,另一种是由顾客在服务队列中等待的订单。
- 使用您选择开发的编程语言中的原生Promise等效物。JS开发者应使用原生Promise,而不是
async/await
。 - 使用原生语言功能创建此应用程序。您不得使用模拟包或库。
- 新顾客以固定的时间间隔到达订单队列。换句话说,新顾客以恒定速率到达。
- 订单票也以固定的时间间隔履行。它们以恒定速率完成。
用户故事
应用程序操作
- [ ] 用户可以看到一个输入区域,允许输入顾客到达的时间间隔以及厨师履行订单的时间间隔。
- [ ] 如果顾客到达间隔或订单履行间隔输入错误,用户可以看到一个自定义的警告消息。
- [ ] 用户可以通过点击开始按钮来启动模拟。
- [ ] 用户可以看到一个包含文本框的订单队列区域,显示正在等待下单的客户数量。
- [ ] 用户可以看到一个包含文本框的订单区域,显示当前正在处理的订单号。
- [ ] 用户可以看到一个厨房区域,包含一个显示正在准备的订单号的文本框和一个文本框,按顺序列出等待订单,并显示等待订单的数量。
- [ ] 用户可以看到一个取餐区域,包含一个显示当前可供顾客取走的订单号的文本框和一个文本框,显示服务队列中等待的顾客数量。
- [ ] 用户可以在任何时候通过点击停止按钮来停止模拟。
额外功能
- [ ] 用户可以指定订单领取者创建订单票所需的时间。
- [ ] 用户可以指定服务器将订单交付给顾客所需的时间。
- [ ] 用户可以在点击开始按钮后指定模拟运行的总时间。
- [ ] 用户可以看到顾客和订单在他们通过工作流程移动时的动画视图。
有用链接和资源
示例项目
- N/a