Design Patterns and SOLID