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.
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.
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
Compartilhar
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.
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.
Heurísticas Relacionadas
Fontes e Referências
Quer se aprofundar? Confira essas fontes oficiais: