Система основана на этих ключевых доменных моделях:
ParkingLot — содержит несколько объектов FloorFloor — хранит коллекцию объектов ParkingSpotParkingSpot — имеет size (SMALL, MEDIUM, LARGE) и флаг isOccupiedVehicle — имеет type, который определяет необходимый размер местаParkingTicket — записывает vehicleId, spotId, entryTime и exitTimeИспользуй жадную стратегию поиска ближайшего доступного места:
Map<SpotSize, PriorityQueue<ParkingSpot>>, отсортированную по этажу и индексу местаЭто обеспечивает O(log n) временную сложность для выделения и освобождения.
Применяй модель динамического ценообразования:
(exitTime - entryTime) * hourlyRate * sizeFactorАбстрагируй платежи за интерфейсом PaymentProcessor с конкретными реализациями:
CreditCardProcessorCashProcessorMobilePayProcessorЖадная стратегия ближайшего доступного места хранит Map<SpotSize, PriorityQueue<ParkingSpot>> отсортированную по этажу и индексу места, чтобы достичь сложности O(log n) для обеих операций выделения и освобождения.
Новый — ещё не проверен сообществом
Вы