Low Level Design Mastery (3 Part Series)
1 Parking Lot System: Low Level Design
2 Parking Lot System: Code
3 How we designed and coded our Product Service
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.
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.
- 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
- 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.
- 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.
- 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)
We’ll get to the code in our next blog, Follow for more updates
Low Level Design Mastery (3 Part Series)
1 Parking Lot System: Low Level Design
2 Parking Lot System: Code
3 How we designed and coded our Product Service
暂无评论内容