DEV Community

Cover image for Parking Lot System: Low Level Design
server side digest
server side digest

Posted on

75 1

Parking Lot System: Low Level Design

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

Top comments (9)

Collapse
 
410nidhi profile image
Nidhi Upasani •

Very informative :)

Collapse
 
ssd profile image
server side digest •

Thanks 😎

Collapse
 
nsengupta profile image
Nirmalya Sengupta • • Edited

If Ticket has-A Vehicle, then the member's type should be Vehicle, instead of VehicleType, no? or am I missing something?

Collapse
 
ssd profile image
server side digest •

Yes You are right bro, Ticket should have Vehicle not VehicleType

Collapse
 
avitoohband profile image
Avi Tuchband •

I didn't reed till the very end, but for the ParkingSpot(first schema), wouldn't it be better to make it an Abstract Class, I guess the methos will have the same implementation for all extended classes, correct me if I'm wrong.

Collapse
 
caroline profile image
Caroline •

Great post!!

Collapse
 
vilce profile image
Ștefan Vîlce •

excellent post!

Collapse
 
hartajsinghdev profile image
Hartaj-Singh-Dev •

NOICE

Collapse
 
ssd profile image
server side digest •

Thanks Buddy

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs