Back to LLD explorer
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;
    }
}