百度前端技术学院是一个为大学生创办的免费的前端技术实践、分享、交流平台。由百度校园招聘组、百度校园品牌部、百度前端技术部以及多个百度的前端团队联合创办。学院组织了一批百度在职工程师,精心编写了数十个实践编码任务,将技术知识点系统有机地串联在各个充满趣味与挑战的任务中,同学们通过实际地编码练习来掌握知识,再辅以互相评价、学习笔记等方式,加深对于学习内容的理解。在过去的三年中,百度前端技术学院累积吸引了上万名同学参加,并且有数十名同学在学习后,顺利加入了百度,成为了百度的前端工程师。

第五十天到第五十三天:开一家餐厅吧(四)

进阶

人数58人在学习该课程,有36人已经完成该课程

时间平均用时1.1

关键词JavaScript

课程概述

作业提交截止时间:09-01

第五十天到第五十三天:开一家餐厅吧(四)

课程目标

通过今天的练习,来继续深入练习,如何通过编程中的抽象设计、封装来解决实际问题

尝试把我们提供的学习资料中的内容,运用到任务编码中

课程描述

阅读

抠门的老板把餐厅扩建了

需求

上一个任务中,我们的餐厅只有一个厨师,一个服务员和一个座位,老板觉得赚太少了,所以要增加座位,但是老板很抠门,还是不愿意增加服务员和厨师

所以,你的厨师和服务员要同时服务好多人,而顾客的到来也不再是源源不断了,设计一个顾客随机到达的方法。

我们做几个假设

  • 服务员不能同时为多个顾客点菜,也就是说,服务员为一个顾客点完菜后,必须到厨师那里告诉厨师要做什么菜,然后再去服务下一个顾客
  • 厨师可以同时为一个菜做多份,当厨师准备做一个菜时,如果待做的列表里有同样的菜,那厨师可以一次性把几份都做出来
  • 对应上一条,服务员上菜时候可以上多份,但服务员在顾客与顾客之间移动不需要时间。

针对顾客随机到达,我们可以设计一个方法,每 n 个时间单位随机生成 m 个顾客,在有空余座位的时候,则入座,否则则排队,如果排队超过 k 个人,则后续的顾客选择不排队了去吃其他家。

依然用可视化的方式进行呈现。

设计及编码

其实这个任务和上一个任务,没有太本质的区别,多个顾客只是提升了任务量,对于厨师和服务员的调度,没有太大区别。

所以,你不妨先重构上一个任务,保证你代码中,厨师与服务员,和顾客是解耦的,这样在这个任务中,你只需要处理顾客相关的逻辑。

老板终于加人了

需求

老板发现,因为厨师和服务员没增加,所以虽然增加了座位,但是,收入增加得并不明显,所以他终于舍得多招一些厨师和服务员了。

在页面上新增两个按钮,分别是新增厨师和新增服务员,同时对于每个厨师和服务员,新增开除的操作。

只要有顾客需要服务,则有空的服务员第一时间去服务,如果有菜需要做,则有空的厨师开始做

设计及编码

任何一个顾客进店后,就发出一个信息(触发事件)“客人到了”,然后所有空余服务员中按某种顺序排后的第一个对这个消息进行响应并消费(进行服务),

服务员为顾客点完菜后,把点菜单放在后厨白板上(发出这个信息),第一个做完菜的厨师看见这个信息后,就开始做这个菜(消费掉这条消息)。

上菜同理。

上了点餐 APP

需求

服务员太多太花钱,老板开发了个 APP 让顾客自己点菜,服务员只需要上菜就行了。

基于上一个任务,服务员不再需要点菜,客人入座后直接开始点菜

设计及编码

要求是,基于上一个任务,尽量不改变顾客点菜及厨师开始做菜的相关方法,考虑如何把三者进行解耦,通过消息、事件或者其他机制来实现

提交

把代码及预览地址进行提交

总结

依然把今天的学习用时,收获,问题进行记录

下一个任务预告

下一个任务,我们将迎接全新的任务

学员提交的作业 (-)
学员名称提交时间提交的代码预览效果评价数平均得分操作
课程优秀学习笔记

暂无优秀学习笔记~