What if you could change parking rules without rewriting your entire system?
Why Parking strategy pattern in LLD? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine managing a parking lot where you have different types of vehicles: cars, bikes, and trucks. You try to assign parking spots manually by writing separate code for each vehicle type everywhere in your system.
This manual approach quickly becomes messy and confusing. Every time you add a new vehicle type or change parking rules, you must hunt through your code to update multiple places. It's slow, error-prone, and hard to maintain.
The Parking strategy pattern lets you define different parking rules as separate strategies. You can switch or add new strategies easily without changing the main parking logic. This keeps your code clean, flexible, and easy to extend.
if vehicle == 'car': park_in_car_spot() elif vehicle == 'bike': park_in_bike_spot() elif vehicle == 'truck': park_in_truck_spot()
strategy = get_parking_strategy(vehicle) strategy.park(vehicle)
It enables flexible and scalable parking management that adapts easily to new vehicle types and parking rules without rewriting core logic.
A smart parking app that supports cars, electric scooters, and delivery trucks can use different parking strategies for each, making it easy to add new vehicle types later.
Manual parking code is hard to maintain and extend.
Strategy pattern separates parking rules into reusable parts.
This makes parking management flexible and scalable.
Practice
Parking Strategy Pattern in a parking lot system?Solution
Step 1: Understand the role of strategy pattern
The strategy pattern lets you swap different algorithms easily without changing the main code.Step 2: Apply this to parking system context
In parking, it means you can change how spots are found without rewriting the whole system.Final Answer:
To allow different algorithms for finding parking spots without changing the main system -> Option CQuick Check:
Strategy pattern = flexible parking spot finding [OK]
- Confusing strategy pattern with data storage
- Thinking it controls hardware like gates
- Mixing it with payment processing logic
Solution
Step 1: Identify interface syntax in OOP
Interfaces define method signatures without implementation, e.g.,interface ParkingStrategy { findSpot(vehicle): Spot; }.Step 2: Compare options
interface ParkingStrategy { findSpot(vehicle): Spot; } correctly uses interface with method signature. Others are class, function, or object, not interface.Final Answer:
interface ParkingStrategy { findSpot(vehicle): Spot; } -> Option DQuick Check:
Interface = method signature only [OK]
- Using class instead of interface for strategy
- Defining functions outside interface context
- Confusing object creation with interface definition
findSpot(vehicle) is called using NearestParkingStrategy?
class NearestParkingStrategy {
findSpot(vehicle) {
return "Nearest spot found";
}
}
class RandomParkingStrategy {
findSpot(vehicle) {
return "Random spot found";
}
}
const strategy = new NearestParkingStrategy();
console.log(strategy.findSpot('car'));Solution
Step 1: Identify which strategy instance is used
The code creates an instance ofNearestParkingStrategyand callsfindSpot.Step 2: Check method output for that class
NearestParkingStrategy.findSpotreturns "Nearest spot found".Final Answer:
"Nearest spot found" -> Option AQuick Check:
Instance method output = "Nearest spot found" [OK]
- Confusing which strategy instance is created
- Assuming random strategy is used
- Expecting undefined or error without reason
ParkingLot from using different parking strategies correctly?
class ParkingLot {
constructor() {
this.strategy = null;
}
setStrategy(strategy) {
this.strategy = strategy;
}
park(vehicle) {
return this.strategy.findSpot(vehicle);
}
}
const lot = new ParkingLot();
lot.park('car');Solution
Step 1: Analyze object initialization and method calls
TheParkingLotis created withstrategy = null. No strategy is set before callingpark.Step 2: Understand consequence of null strategy
Callingthis.strategy.findSpot(vehicle)whenstrategyis null causes an error.Final Answer:
No strategy is set before calling park, causing an error -> Option AQuick Check:
Null strategy causes error on method call [OK]
- Thinking park method logic is wrong
- Assuming strategy should be a list
- Ignoring null initialization problem
Solution
Step 1: Identify need for flexibility and scalability
Supporting multiple vehicle types and strategies requires flexible design without code duplication.Step 2: Apply strategy pattern with runtime selection
Using one ParkingLot class with strategy interface allows swapping strategies dynamically based on vehicle type.Step 3: Evaluate other options
Create separate parking lot classes for each vehicle type and hardcode the strategy inside each duplicates code, C ignores strategy pattern, D uses poor global state management.Final Answer:
Use a single ParkingLot class with a strategy interface; implement different strategies and select based on vehicle type at runtime -> Option BQuick Check:
Strategy pattern + runtime selection = best design [OK]
- Duplicating classes per vehicle type
- Ignoring strategy pattern benefits
- Using global variables instead of OOP
