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