Design Elevator System

『设计电梯类』,每个人对于电梯都有一个具体的认知,但面试者自己的理解是否就和面试官一致呢?避免想当然的去假设,多问问题,明确细节,比如:

  • 电梯的容量(载重,载入数)是否考虑?
  • 电梯的运行范围是几层到几层?
  • 是一部电梯还是多个电梯?

    当我们相对了解题目的具体需求之后,设计电梯类时要从OO设计基本原则入手,比如封装性,本质上就是讲class内部的状态封装在内,对外提供合理的方法接口。

从方法的角度思考相对直观:根据题目的需求,一个基本的电梯类应该提供什么样的方法呢?

开门、关门
移动到下一目标楼层
接受去目标楼层的请求

以上都是最直观、最基本的方法,相对应的就是电梯内部的基本状态:

电梯门的开关状态 (开关门会影响该状态)

运行方向(移动会影响该状态,该状态也影响下一步行动);
当前楼层 (移动会影响该状态,该状态也影响下一步行动)
需要停的楼层集合(接受去某楼层的请求会影响该状态,该状态影响下一步行动);

References

1 thought-works: Object Oriented design for Elevator in a multi-storied apartment

2 Object Oriented design for Elevator in a multi-storied apartment

results matching ""

    No results matching ""