- SRP :
Keep classes focused on one responsibility - OCP :
Support future requirements without modifying existing code - LSP :
Prevent brittle hierarchies that break at runtime - ISP :
Keep interfaces clean and focused - DIP :
Keep code flexible and testable through abstraction