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 ๐
- ParkingSpot ๐ ฟ๏ธ
- Vehicle ๐
- ParkingSpotManager (EntranceManager and ExitManager) ๐ ฟ๏ธ
- Ticket ๐ซ
- ParkingSpotType and VehicleType (enum) ๐
- ParkingStrategy ๐ฆ
- CostConfiguration ๐ธ
- 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.
๐ ฟ๏ธ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.
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>
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
๐ฉ 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๐ค.
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! ๐
Top comments (4)
Very well explained!
thanks๐
nice blog@mjsf1234, kept my engines in the air!
thanks prince