设计电梯
题目要求:没说啥,就让设计一个电梯控制系统,人手里的pad来输入自己去几楼,不用考虑电梯分配算法(认为可以自动获得),多个电梯距离自己等距离。没别的啦,细节需要和面试官讨论。
本来面试觉得这个题答得挺好的,结果这一轮挂了呵呵。于是学习一下怎么答OOD的问题吧。(这个作为一个例子,之后再写其他的)
我百度谷歌了一会,下面是一些笔记和体会啦:
(TODO: 看了很多很复杂的码,等回头自己写一个完整的码)
不要纠结在故事本身,答题要套要点(感觉和语文考试答主观题一样):
- 先有几个class,每个内存成员都有啥,哪个private,哪个public
(这一点我看有些答案把功能设定得很详细,比如开门状态啊这种,我觉得一开始搞这么复杂后面简直要乱套啊我晕)
这个感觉要把封装的思想体现出来。 - 然后想几个class之间的关系,都有啥method,留什么接口。
(我觉得的这些,以我的智商,如果第一次现场想还挺难想清楚的,像我以前自己写个啥小程序,这些method传哪些参数啊,谁放在谁内部啊,都要反复改很多遍,总是互相牵制,呵呵)。 - 更高级的,还有design pattern,继承啊,多态啊,要是能应用就最好了估计。