Design Pattern
Dependency Injection
Three types of DI Constructor Injection Setter Injection Interface Injection
SOLID Principle
Single Responsibility Principle Open Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle