DEV Community

Cover image for A Deep Dive into Parking Spot LLD Design
mrityunjay saraf
mrityunjay saraf

Posted on

A Deep Dive into Parking Spot LLD Design

Greetings, dear reader! 🌟

In this blog, we're crafting functional and super-efficient parking spots. And guess what? We're diving into design patterns to make them even smarter and more effective. So reading.start()πŸš—πŸ’‘

Responsibility

πŸš— Vehicle Entry and Exit: Finding the appropriate parking spot for the vehicle and creating the ticket.

πŸ…ΏοΈ Parking Spot Allocation: Efficiently allocate available parking spots to incoming vehicles based on factors like size, type, and user preferences.

πŸ’° Cost Computation and Payment: Calculate parking costs based on duration and vehicle type, offering flexible payment options for users.

πŸ† Parking Strategy Options: Different parking strategies (e.g., park near entrance, park near elevator) should be available to users and prioritize spot allocation based on user preferences and vehicle type.

Our Parking Model Lineup 🌟

  1. ParkingSpot πŸ…ΏοΈ
  2. Vehicle πŸš—
  3. ParkingSpotManager (EntranceManager and ExitManager) πŸ…ΏοΈ
  4. Ticket 🎫
  5. ParkingSpotType and VehicleType (enum) πŸš—
  6. ParkingStrategy 🚦
  7. CostConfiguration πŸ’Έ
  8. CostComputationStrategyπŸ’°

ParkingSpot Interface πŸš—πŸοΈ

πŸš™ The ParkingSpotManager holds a collection of ParkingSpot catering to various Vehicle types (2-wheelers and 4-wheelers).

πŸ› οΈ To achieve this, we'll create an interface that Concrete Classes (like twoWheelerParkingSpot and FourWheelerParkingSpot) can implement.

🏁 Additionally, it employs a ParkingSpotType enumeration to categorize the types of parking spots available.

πŸš€ The benefit of employing this interface is that if we decide to introduce a new type of parking spot later on, we can simply create a class that adheres to the interface.

Image description

πŸ…ΏοΈParkingManager: Central hub for parking spot management, handling addition/removal, spot allocation, ticket creation, and price computation.

πŸš—EntranceManager: This manager is responsilbe for efficiently allocating parking spots to incoming vehicles based on vehicle types and parking strategies and Generating the ticket.

🚦 ExitManager: Calculate parking fees using a Cost computation strategy considering duration and spot type.

Image description

Finding the Right Spot for you Vehicle πŸš—

πŸš€Imagine the EntranceManager as a matchmaker for vehicles.

🎯 It take two parameter: a vehicle to know vehicle type, and a ParkingStrategy to understand the user preference.

πŸ’‘Using this, it finds the right parking spot and makes a ticket for that vehicle and strategy.

🚫After the successfull allocation of the spot, the spot in marked as the occupied and hence not available for the other Vehicle.

πŸŽ‰ Unraveling the Magic:
You might notice our usage of

Optional<Ticket>
Enter fullscreen mode Exit fullscreen mode

In essence, an Optional acts as a container that may or may not hold a ticket. Optional are used to avoid null check if object not found

Image description

🎩 Exit Manager: Calculate your Parking Fare!

πŸš— When your trusty vehicle bids adieu and rolls out from the parking haven, the Exit Manager springs into action.

πŸ’°By summoning the mighty Cost Computation Strategy (including the HourlyCostComputation and DailyCostComputation) and your ride Duration ,it crafts a fair and fancy price tagπŸ€‘.

Image description

After we have combined all the stuff here is the complete Diagram.

Image description

🌟 Thanks for joining our parking adventure!😊

πŸ’¬ If you enjoyed reading this blog,please take a moment to share your thoughts by leaving a review and liking it πŸ˜€

πŸš— Stay tuned for our next blog, where we'll dive into an exciting coding demo of this smart parking system. Keep your engines running! πŸŽ‰

Top comments (4)

Collapse
 
mahimarajput profile image
MahimaRajput

Very well explained!

Collapse
 
mjsf1234 profile image
mrityunjay saraf

thanks😊

Collapse
 
princekr11 profile image
princekr11

nice blog@mjsf1234, kept my engines in the air!

Collapse
 
mjsf1234 profile image
mrityunjay saraf

thanks prince