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()🚗💡
🚗 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.
- ParkingSpot 🅿️
- Vehicle 🚗
- ParkingSpotManager (EntranceManager and ExitManager) 🅿️
- Ticket 🎫
- ParkingSpotType and VehicleType (enum) 🚗
- ParkingStrategy 🚦
- CostConfiguration 💸
🚙 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.
🅿️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.
🚀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
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
🚗 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🤑.
After we have combined all the stuff here is the complete Diagram.
🌟 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! 🎉