A hands-on repository for Low-Level Design fundamentals: UML class diagrams, SOLID principles, design patterns, and classic LLD problems. Each topic includes Java and Python implementations where applicable, with READMEs and examples you can run locally.
- UML & class diagrams — How to model structure and relationships before coding.
- SOLID principles — Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
- Design patterns — Creational, structural, and behavioral patterns with code (with/without pattern comparisons where relevant).
- Problems — End-to-end designs (e.g. Parking Lot) that tie together patterns and principles.
| Section | Description |
|---|---|
| UML Diagrams | Notes and tutorials on UML, with focus on class diagrams. |
| SOLID Principles | Single Responsibility, Open/Closed, Liskov, Interface Segregation, Dependency Inversion. |
| Design Patterns | Pattern explanations and code (Java + Python). |
| Problems | Full LLD problems with Java and Python solutions. |
Intro to UML and class diagrams (elements, relationships, visibility, multiplicity).
| Topic | Link |
|---|---|
| Class Diagram | uml-diagrams/class-diagram |
Java and Python examples (with and without violations) under SOLID-Principles/java/ and SOLID-Principles/python/.
| Java | Python |
|---|---|
| SOLID-Principles/java | SOLID-Principles/python |
Java and Python code live under design-patterns/java/<pattern>/ and design-patterns/python/<pattern>/. Each pattern folder has a README and runnable examples.
Java and Python implementations live under problems/java/<problem>/ and problems/python/<problem>/.
| Problem | Java | Python |
|---|---|---|
| Parking Lot System | problems/java/ParkingLotSystem | problems/python/ParkingLotSystem |
- Java: Open the project in an IDE or use
javac/javafrom the relevantjava/(orjava/src/...) directory. - Python: From the pattern or problem folder (e.g.
design-patterns/python/Adapter-DesignPattern), setPYTHONPATH=.so thesrcpackage is found, then run the module. Example:For problems (e.g. Parking Lot), run from the problem folder withcd design-patterns/python/Adapter-DesignPattern && PYTHONPATH=. python3 -m src.demo
PYTHONPATH=src:cd problems/python/ParkingLotSystem && PYTHONPATH=src python3 src/parking_lot_demo.py
Contributions are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/your-feature-name - Submit a pull request
Please make sure to update README files and documentation as appropriate.