电梯
等级: 3-高级
如果没有电梯,想想世界会变得多么艰难。特别是如果你每天都要走20层楼梯。但如果我们考虑一下,电梯甚至是在网络应用程序出现之前就已经实现了事件和事件处理器的原始实现之一。
电梯应用的目的是模拟电梯的操作,更重要的是,如何处理当建筑物的居民使用它时生成的事件。这个应用程序模拟了居民从任何楼层呼叫电梯,并按下电梯内的按钮来指示他们希望去哪一层。
限制
- 每个楼层的上下按钮必须实现单一事件处理器。例如,如果有4层,应该实现一个单一的事件处理器而不是每个楼层两个(每个楼层两个按钮)。
- 同样,电梯控制面板上的所有按钮也应该实现单一事件处理器,而不是为每个按钮实现独特的事件处理器。
用户故事
- [ ] 用户可以看到一个四层建筑的横截面图,包括电梯井、电梯以及第一层的向上按钮、第二和第三层的向上和向下按钮,以及第四层的向下按钮。
- [ ] 用户可以看到电梯控制面板上图表侧面的每个楼层的按钮。
- [ ] 用户可以点击任何楼层的向上和向下按钮来召唤电梯。
- [ ] 用户可以期望点击任何楼层的向上和向下按钮请求电梯会在它们被点击的顺序中被排队并服务。
- [ ] 用户可以看到电梯在井道中向上和向下移动到被召唤到的楼层。
- [ ] 用户可以点击电梯控制面板选择电梯应该行驶到的楼层。
- [ ] 用户可以期望电梯在控制面板上的楼层按钮被点击前暂停5秒。如果在这段时间内没有点击楼层按钮,电梯将处理下一个呼叫请求。
- [ ] 当没有请求要处理时,用户可以期望电梯回到第一层。
额外功能
- [ ] 如果电梯请求次数超过允许的最大次数,用户可以看到一个警告声音。这个限制留给了开发者。
- [ ] 当电梯到达某层时,用户可以听到声音。
- [ ] 用户可以看到一个随机到达楼层的居民,以指示用户在哪个楼层应该点击向上或向下的电梯呼叫按钮。
- [ ] 用户可以指定新居民到达的时间间隔,以便呼叫电梯。