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 Casa
  • 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