停车场系统:低层设计
这是我们“底层设计”系列的第一篇博文。我们将从设计和编写一个停车场系统开始。在编写代码时,我们将遵循之前博文(第一部分和第二部分)中讨论过的一些设计模式。
在开始设计之前,必须了解系统的需求和目标。
要求:-
- 我们有一个入口和一个出口
- 我们为两轮车、三轮车和四轮车提供不同的停车位
- 停车费按小时和分钟计算
- 有多个停车楼层
- 我们有不同的策略来寻找停车位,例如靠近电梯的停车位、靠近入口的停车位等
所需物品:-
- 票
- 入口
- 停车位
- 车辆,车辆类型(枚举)
现在,让我们设计一下😎
但是但是但是,在进行设计之前,有一件最重要的事情,即遵循以下任一方法
- 自上而下的方法
- 自下而上的方法
在自上而下的方法中,我们从系统开始。在我们的例子中,系统从车辆进入停车位开始。
在自下而上的方法中,我们从主要需求(任何需求)开始,例如从 ParkingSpot 开始,然后再进一步。
思维过程:-
现在,这是我们在设计时的思考过程。
- 车辆需要停放在某个位置(设计停车位)
- 但是我们有不同类型的车辆(2、3、4 轮车),因此将 ParkingSpot 作为接口并扩展到 TwoWheeler、ThreeWheeler 和 FourWheeler ParkingSpot。
- 现在,我们有了 ParkingSpots,但为了管理这些 ParkingSpots,我们必须创建一个管理器(ParkingSpotManager),它将成为控制 ParkingSpots 的集中位置。
- 这里,我们有一个具有不同实现的停车策略(策略模式)。
- 我们有 has-a 关系,表示它不是孩子,但它有该类的一个实例
- 现在,说到入口和停车票,我们有一个入口,人们从那里领取停车票。所以,它应该有一个停车票,一个停车位管理器,用于查找停车位等等。
- 现在,我们必须在门票上包含价格,并且可以从入口处分配价格。现在,价格可以不同,并且可以有多种实现。
- 现在,它可能看起来很乱,但最后把所有的东西结合起来,它看起来像这样(抱歉,如果图像不清晰,请点击Google Drive链接获取高质量图像)
鏂囩珷鏉ユ簮锛�https://dev.to/ssd/parking-lot-system-low-level-design-30gi我们将在下一篇博客中介绍代码,请关注以获取更多更新