O custo aparece quando a regra muda
Imagine que a matrícula envia confirmação por e-mail. Se a regra de matrícula cria diretamente uma classe EmailNotifier, uma troca para WhatsApp ou a necessidade de executar testes sem enviar mensagens altera a regra ou exige truques no teste.
Uma interface ajuda quando representa uma variação real do domínio: Notifier descreve o que a matrícula precisa; implementações concretas traduzem isso para e-mail ou WhatsApp. Isso inverte a dependência de código de alto nível em relação ao detalhe. Injeção de dependência é uma forma de fornecer a implementação; inversão de dependência é a regra sobre a direção das dependências.
Abrir diagrama em tamanho original
Coesão pergunta se responsabilidades que mudam juntas ficam próximas. Acoplamento pergunta quanto uma parte precisa conhecer da outra. SOLID oferece critérios para observar esses pontos. Aplicar cada princípio sem contexto pode multiplicar interfaces e indirection sem reduzir custo de mudança.
Material complementar da Fernanda
- Guia SOLID: DIP e injeção de dependência — Leia as seções 1 e 2 e compare com o contrato de notificação desta aula. O guia cobre o D do SOLID, não os cinco princípios. O exemplo NestJS está incompleto; use-o como introdução conceitual, não como projeto executável.
Pratique com /aprender
/aprender Mostre uma regra de matrícula acoplada diretamente ao envio de e-mail. Peça que eu explique o custo de trocar o canal e como testar sem enviar mensagem. Depois guie uma refatoração para um contrato, explicando separadamente injeção e inversão de dependência.
