A collection of fundamental software design principles with practical Java implementations.
- Single Responsibility Principle (SRP) - A class should have only one reason to change
- Open/Closed Principle (OCP) - Software entities should be open for extension, closed for modification
- Liskov Substitution Principle (LSP) - Objects should be replaceable with instances of their subtypes
- Interface Segregation Principle (ISP) - Clients should not be forced to depend on interfaces they don't use
- Dependency Inversion Principle (DIP) - Depend on abstractions, not concretions
- DRY Principle - Don't Repeat Yourself
- KISS Principle - Keep It Simple, Stupid
- YAGNI Principle - You Aren't Gonna Need It
Each principle is demonstrated with practical Java examples. Click on any principle above to view its implementation and understand how to apply it in your code.
This repository focuses on code examples rather than theory. Each file contains well-commented implementations that demonstrate the principle in action.