Interface Segregation Principle
Keep interfaces small and focused so classes are not forced to implement unused methods.
Keep interfaces small and focused so classes are not forced to implement unused methods.
Depend on abstractions (interfaces), not concrete low-level classes.
Use design patterns as reusable solutions to common software design problems.
Understand Singleton and why modern apps often prefer DI containers instead.
Isolate data access behind repository classes for cleaner domain code.
Give each class one reason to change — one responsibility.
Ensure subclasses can replace parent types without breaking callers.