Welcome! This repo contains real-world problem statements designed to help you practice SOLID design principles.
You can:
- Read the problem statements in the
Problem-Statementfolder. - Implement your own clean solutions in your prefered Language in the
Solutionsfolder.
SOLID Start/
│
├── DIP/ # Examples for Dependency Inversion Principle
├── ISP/ # Examples for Interface Segregation Principle
├── LSP/ # Examples for Liskov Substitution Principle
├── OCP/ # Examples for Open-Closed Principle
├── SRP/ # Examples for Single Responsibility Principle
│
├── Problem-Statement/ # All problem statements
│ ├── ps-1.md
│ ├── ps-2.md
│ └── ps-3.md
│
└── Solutions/ # Participant solutions go here
└── exampleName_ps1/
├── level1/ # Step 1 implementation
├── level2/ # Step 2 implementation
└── level3/ # Step 3 implementation
-
Read a problem statement from
Problem-Statement/
Example:ps-1.md -
Create a folder in
Solutions/with:- Your GitHub username (or name)
_- Problem statement number
Example:johnDoe_ps1
-
Inside your folder, create: level1/ → Step 1 solution
level2/ → Step 2 solution
level3/ → Step 3 solution -
Follow SOLID principles in every level.
-
Include a README.md in your folder explaining:
- How your solution follows SOLID
- Design decisions you made
If I (user nks) solve Problem Statement 1:
Solutions/nks_ps1/
README.md
level1/
Main.java
level2/
Main.java
level3/
Main.java
- Fork the repo
- Add your solution in
Solutions/ - Create a pull request with a short description of your changes