在为Interviews学习时,我想到了这个问题。 我打算设计一个停车场,我假设以下事项:
6(可选)。还想加残疾人的情况。
这些是我可以提出的一些假设(不确定它们是否足够或我需要更多)。
我正在考虑以车辆进入停车场入口的方式设计系统。
应该向他提供有关最近空置点的信息(例如 - 第3级,第2行,第10点)
我想知道如何设计这样的系统?我见过许多其他设计,但我猜没有达到这个目的。
答案 0 :(得分:2)
不确定你想通过第6点实现什么,但通过通常的抽象,继承和多态原则,通过OO设计实现其余的非常简单。
你可以拥有一个名为interface
的{{1}},它有一个布尔方法AvailabilityIndicator
,代表指示灯(如果isAvailable()
是{{1,则灯泡会显示红色如果isAvailable()
,则为绿色。
您可以拥有一个名为false
的{{1}},它会实现true
。
这可能包含水平,行和点数。
您可以有3个abstract class
,ParkingSlot
和AvailabilityIndicator
分组LargeParkingSlot
。 (并不是说你的功能确实需要这个,除非不同的停车位有你想要建模的不同行为或数据,但是因为你提到你想要一个OO方法我提到它,否则{{1}中的一个简单的CompactParkingSlot
参数会做的。)
然后问题是车辆什么时候到达,检查它需要什么类型的插槽并查找哪些是匹配的可用插槽。您可能希望将它们放在SmallParkingSlot
数据结构中,该结构将每个插槽类型映射到可用的列表类型,以便在获取一个时将其删除并放入单独的ParkingSlot
列表中,以便快速在车辆到达时查找slotType
个插槽。