Os princípios SOLID e os Design Patterns estão intimamente relacionados porque os padrões de projeto muitas vezes ajudam a implementar os princípios do SOLID na prática. Aqui está um mapeamento entre os princípios do SOLID e os padrões de projeto:
1. Single Responsibility Principle (SRP) – Princípio da Responsabilidade Única
Uma classe deve ter apenas um motivo para mudar.
Design Patterns Relacionados:
-
Facade – Cria uma interface simplificada para um conjunto de subsistemas, separando responsabilidades.
-
Decorator – Permite adicionar responsabilidades dinamicamente, evitando que uma única classe tenha muitas funções.
-
Adapter – Separa a conversão de interfaces em uma única responsabilidade.
-
Strategy – Separa algoritmos em classes específicas, reduzindo a quantidade de responsabilidades em uma classe principal.
2. Open/Closed Principle (OCP) – Princípio Aberto/Fechado
Classes devem estar abertas para extensão, mas fechadas para modificação.
Design Patterns Relacionados:
-
Strategy – Permite adicionar novos comportamentos sem modificar a estrutura existente.
-
Decorator – Estende funcionalidades sem alterar o código original.
-
Factory Method – Permite criar novos objetos sem modificar a classe base.
-
Template Method – Permite definir um esqueleto de algoritmo, permitindo extensões sem modificar a estrutura geral.
3. Liskov Substitution Principle (LSP) – Princípio da Substituição de Liskov
Subtipos devem ser substituíveis por seus tipos base sem quebrar o comportamento esperado.
Design Patterns Relacionados:
-
Factory Method – Garante que as classes criadas sigam a hierarquia correta.
-
Template Method – Garante que subclasses implementem corretamente um comportamento definido.
-
Bridge – Separa abstração da implementação, garantindo substituição sem problemas.
4. Interface Segregation Principle (ISP) – Princípio da Segregação de Interfaces
Uma interface grande deve ser dividida em interfaces menores e específicas para evitar que classes sejam forçadas a implementar métodos que não utilizam.
Design Patterns Relacionados:
-
Proxy – Cria interfaces específicas para diferentes clientes.
-
Bridge – Separa interfaces para evitar dependências desnecessárias.
-
Adapter – Converte interfaces para que cada classe utilize apenas o que precisa.
5. Dependency Inversion Principle (DIP) – Princípio da Inversão de Dependência
Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações.
Design Patterns Relacionados:
-
Dependency Injection – Injeta dependências por meio de interfaces, evitando acoplamento.
-
Abstract Factory – Permite criar objetos sem depender de implementações concretas.
-
Factory Method – Desacopla a criação de objetos do código que os utiliza.
-
Observer – Desacopla os sujeitos dos seus observadores, garantindo flexibilidade.
Esse mapeamento ajuda a entender como os padrões de projeto podem ser usados para aplicar e reforçar os princípios do SOLID, tornando o código mais modular, flexível e fácil de manter.