Dependency inversion principle (DIP) – Principio da inversão de dependência

Salve, salve, galera, vamos encerrar nosso bate-papo sobre os princípios SOLID com o último princípio, o da inversão de dependências. Esse princípio diz que:

- Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações.
– Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações.

De forma geral, não devemos depender de implementações  e sim de abstrações.

Mas e ae ??? Onde fica o exemplo ???

Vamos observar o seguinte bloco de código:


public class Lampada
{
      public void Ligar() { }
}

public class Carro
{
      private Lampada _lampada;

      public void AcenderFarol()
      {
         _lampada.Ligar();
      }
}

Agora observem que a implementação da classe carro depende diretamente da classe lampada, ou seja, qualquer manutenção ou nova implementação deve obrigatoriamente ocorrer na classe lampada. Agora observem o seguinte código:


 public interface ILampada
 {
       public void Ligar();
 }

 public class Lampada:ILampada
 {
          public void Ligar() { }
 }

 public class Carro
 {
     private ILampada _lampada;

     public void AcenderFarol()
     {
         _lampada.Ligar();
     }
 }

Percebam que não temos mais dependência da implementação da classe e sim da sua interface. Ou seja , caso precisarmos dar manutenção em algo do core, desde que , herdado da mesma interface não teremos problemas.

Esse principio é um dos mais utilizados quando falamos de aplicativos robustos e flexíveis.

Um exemplo que eu gosto muito de citar quando falos de DIP é o de empresas que trabalham com softwares de mercado e que as vezes acabam customizando uma classe para o cliente X de um jeito e para o cliente Y de outra forma, se dependermos da implementação para cada classe customizada teremos que rever todos os pontos onde ele é implementado e invocado (além é claro que ClienteX é diferente de ClienteY ), se dependermos de uma interface por exemplo, basta que , haja uma substituição no ponto em que ha a instância e o resto estará certo, certo e integro o que é mais importante.

Vale ressaltar que estamos falando de Inversão de Pendencia não de injeção de dependência nem de inversão de controles ( que logo logo irão gerar mais artigos).

 

Galera caso surja mais alguma duvida, não exitem em entrar em contato.

Ate a próxima.

 
Comments

No comments yet.