Back to LLD explorer
Transactional / OOD Patterns: Factory, Observer

Hotel Management

Hard

Problem Summary

Design a hotel management dashboard managing rooms, dynamic pricing, service bookings, and checkouts.

Functional Scope

  • Rooms categories: Single, Double, Suite, Deluxe.
  • Dynamic price adjustment based on occupancy, season, and room class.
  • Support reservation lifecycle: Booked, CheckedIn, CheckedOut, Cancelled.

Entity-Relationship (ER) Schema

Hotel [1] <---> [*] Room
Room [1] <---> [*] Reservation
Reservation [1] <---> [1] Customer
Reservation [1] <---> [1] Bill

Design Approach

Separate Reservation entities from Room entities. Use state patterns for Room cleaning flows, and lock rooms during booking transactions.

Core Classes & Models

Hotel (Rooms map, reservations)Room (Room number, Category, Status: Free, Occupied, OutOfOrder)Reservation (Customer, Room, Duration, Bill)
Code Blueprint
public class Room {
    private String roomNo;
    public synchronized boolean checkIn() { return true; }
}