Design an Elevator System
| Difficulty: Medium | Source: awesome-low-level-design |
Requirements
- Multiple elevators, multiple floors
- Capacity limit per elevator
- Request from any floor, select destination
- Optimize movement, minimize wait time
- Prioritize by direction and proximity
- Handle multiple concurrent requests
- Thread safety
Class Diagram

Classes, Interfaces and Enumerations
| Class/Interface | Description |
|---|---|
| Direction | Enum: UP, DOWN |
| Request | source floor, destination floor |
| Elevator | capacity, request list; processes requests concurrently |
| ElevatorController | Manages elevators; finds optimal elevator by proximity and direction |
Design Patterns Used
| Pattern | Application |
|---|---|
| Controller | ElevatorController centralizes request dispatching and elevator selection logic |
| Concurrency Management | Each elevator processes its queue concurrently with thread-safe request handling |
Code Implementations
| Language | Source Code |
|---|---|
| Java | View on GitHub |
| Python | View on GitHub |
| C++ | View on GitHub |
| C# | View on GitHub |
| Go | View on GitHub |