Transactional / Concurrency• Patterns: Factory, Observer
Airline Reservation
Hard
Problem Summary
Design an airline reservation system processing flight schedules, aircraft seats allocation, and payment locks.
Functional Scope
- Manage airline inventories (flights, seats by class: Economy, Business).
- Process seat reserves using pessimistic concurrency control.
- Generate passenger flight schedules, boarding passes, and ticket updates.
Entity-Relationship (ER) Schema
Flight [1] <---> [*] FlightInstance FlightInstance [1] <---> [*] FlightSeat Reservation [1] <---> [*] FlightSeat Reservation [1] <---> [1] User
Design Approach
Use database row-level locking (SELECT ... FOR UPDATE) during seat selection to avoid overbooking the same physical aircraft seats.
Core Classes & Models
FlightInstance (Specific departure date, seat status map)Seat (Seat number, class, status)Reservation (Flight details, Passengers list, Status)
Code Blueprint
public class FlightSeat {
private boolean isReserved;
public synchronized boolean reserve() {
if (isReserved) return false;
isReserved = true;
return true;
}
}