Voltar
🎨 Design de Código

Dependency Inversion Principle

Dependa de abstrações, não de implementações concretas

Módulos de alto nível não devem depender de módulos de baixo nível.

🎨
👶

Explicando como se você tivesse 5 anos

Agora sim! 🎉

Em vez de construir sua casa colada na loja de doces (se a loja fechar, você fica triste), você mora perto de "uma loja qualquer". Aí se uma fecha, outra pode abrir lá!

⚠️
🚩

Por que isso é uma Red Flag?

Atenção ao problema! ⚡

Quando módulos de alto nível dependem diretamente de implementações concretas, o código fica rígido e difícil de testar. Mudar uma implementação de baixo nível pode quebrar toda a cadeia. Indica acoplamento forte e falta de testabilidade. A oportunidade está em introduzir abstrações (interfaces) para desacoplar e permitir substituições e testes mais fáceis.

Compartilhar:

História

Uncle Bob criou o DIP para resolver o problema de acoplamento forte entre módulos. Ele percebeu que inverter a direção das dependências (fazendo ambos dependerem de abstrações) tornava o código mais flexível.

Quem Inventou

Robert C. Martin (Uncle Bob)

Ano: 2000

Para que serve

Reduzir o acoplamento entre módulos através de abstrações.

Explicação Detalhada

O Princípio da Inversão de Dependência afirma que: 1) Módulos de alto nível não devem depender de módulos de baixo nível; ambos devem depender de abstrações. 2) Abstrações não devem depender de detalhes; detalhes devem depender de abstrações. Isso inverte a direção tradicional de dependência, onde módulos de alto nível dependiam diretamente de implementações concretas. Use interfaces ou classes abstratas para desacoplar.

Fontes e Referências

Quer se aprofundar? Confira essas fontes oficiais: