Parking Lot System: Low Level Design

server side digest - Apr 24 '23 - - Dev Community

This is our first blog in the series of Low Level Design. We'll start from designing and coding a Parking lot system. While coding we'll be following some design patterns that we discussed in earlier blogs, Part 1 and Part 2.

Before starting the design, one must know the Requirements and Objects of the system.

System Design Meme

Requirements:-

  • We have one entrance and one exit
  • We have different parking spots for two, three and four wheelers
  • Parking prices are based on hourly and minutes based
  • There are multiple parking floors
  • We have different strategies to find the parking spots like Parking Spot near to the elevator, Parking Spot near to entrance etc

Objects Required:-

  • Ticket
  • Entrance
  • Parking Spot
  • Vehicle, VehicleType (Enum)

Now, lets design 😎

But But But, Before coming to the design, there is one most important thing i.e. following either one of the approaches from

  • Top Down Approach
  • Bottom Up Approach

Here, In Top to Down approach we start from the system start. Here in our case our system starts from the entry of a vehicle into a Parking Space.
In Bottom to Up approach, we start from the main requirement (any) like we start from ParkingSpot and then further.

Thought Process:-

Now, here is our thought process while designing.

  • Vehicle needs to be parked at some Spot (Design a Parking Spot)
  • But we have different type of vehicles (2,3,4 wheelers) so make ParkingSpot as an interface and extend to TwoWheeler, ThreeWheeler and FourWheeler ParkingSpot.

Parking Lot System Design

  • Now, we have ParkingSpots but to manage these ParkingSpots we have to make a Manager (ParkingSpotManager) which will be a centralized place to control the ParkingSpots.
  • Here, we have a Parking Strategy (Strategy Pattern) that has different implementation.
  • We have has-a relation which says it is not a child but it has an instance of that class

Parking Lot system manager

  • Now, coming to Entrance and Ticket, we have entrance from where a person collects his ticket to park a vehicle. So, it should have a Ticket, Parking Spot Manager to find parking and all.

Parking Lot System

  • Now, we have to include the Price on the ticket and price can be assigned from the entrance itself. Now, Price could be different and can have multiple implementations.

Parking Lot System

  • Now, It might look a mess to you, But at the end combining all the stuff, it looks like this (Sorry, if image is not clear, kindly click on the Google Drive link for a High Quality Image)

Parking Lot System


We'll get to the code in our next blog, Follow for more updates

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player