SOLID Principles Single Responsibility Open Closed Liskov Substitution Interface Segregation Dependency Inversion