这是让齿轮转动的快速入门...
ParkingLot 是一个类。
ParkingSpace 是一个类。
ParkingSpace 有一个入口。
入口有一个位置,或者更具体地说,是与入口的距离。
ParkingLotSign 是一个类。
ParkingLot 有一个 ParkingLotSign。
ParkingLot 的停车位数量有限。
HandicappedParkingSpace 是 ParkingSpace 的子类。
RegularParkingSpace 是 ParkingSpace 的子类。
CompactParkingSpace 是 ParkingSpace 的子类。
ParkingLot 保留一系列 ParkingSpaces,以及一个单独的空置 ParkingSpaces 数组,按与其入口的距离顺序排列。
ParkingLotSign 可以通过调用 .Full()、.Empty() 或 .Normal() 被告知显示“已满”、“空”或“空白/正常/部分占用”
帕克是一个阶级。
Parker can Park().
Parker 可以 Unpark()。
Valet 是 Parker 的子类,可以调用 ParkingLot.FindVacantSpaceNearestEntrance(),返回一个 ParkingSpace。
派克有一个停车位。
Parker 可以调用 ParkingSpace.Take() 和 ParkingSpace.Vacate()。
Parker 调用 Entrance.Entering() 和 Entrance.Exiting() 并且 ParkingSpace 在它被占用或腾出时通知 ParkingLot,以便 ParkingLot 可以确定它是否已满。如果是新满或新空或新未满或空,则应更改 ParkingLotSign.Full() 或 ParkingLotSign.Empty() 或 ParkingLotSign.Normal()。
HandicappedParker 可以是 Parker 的子类,CompactParker 可以是 Parker 的子类,RegularParker 可以是 Parker 的子类。 (实际上可能有点矫枉过正。)
在此解决方案中,Parker 可能应重命名为 Car。