DIP
Dependency Inversion Principle
Dependa de abstrações e não de implementações.
“Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender da abstração.” “Abstrações não devem depender de detalhes. Os detalhes devem depender das abstrações.”
A ideia é que isolemos nossa classe atrás de um limite formado pelas abstrações que dela dependem. Se os detalhes por trás dessas abstrações mudarem, nossa classe ainda continuará segura. Isso ajuda a manter o acoplamento baixo, além de tornar nosso projeto mais fácil de ser alterado, permitindo testar coisas isoladamente.

Exemplo Boa Prática:
A classe Interruptor depende da abstração Lampada para controlar a lâmpada. O Princípio da Inversão de Dependência (DIP) é seguido, pois a classe de alto nível (Interruptor) não depende diretamente da classe de baixo nível (Luminaria). Isso torna o código flexível e permite a troca de diferentes implementações de lâmpada sem modificar o Interruptor.
Exemplo Má Prática:
Neste exemplo, a classe Interruptor depende diretamente da implementação concreta da lâmpada Luminaria, o que não segue o Princípio da Inversão de Dependência (DIP). Qualquer mudança na implementação da lâmpada pode exigir a modificação da classe Interruptor, tornando o código menos flexível e mais difícil de manter.
Last updated