1
resposta

Como posso implementar Injeçao de Dependencia no ANDROID,

A injeçao de dependecia é um conceito bem importante a ser utilizado.

Uma explicacao interessante que eu acho é a seguinte: Imagine que seu celular é o seu modulo do programa.

Agora imagine que o carregador é uma dependencia.

Um sistema fortemente acoplado é similar a um carregador preso ao celular. Entao se for preciso trocar o carregador. É necessario trocar todo conjunto celular e carregador.

Na inversao de controle temos uma gaveta cheia de carregador e o sistema envia a que ele acredita ser melhor para nossa aplicacao. Nem sempre o melhor.

Na injeção de dependencia temos por exemplo um celular e uma gaveta com diversos carregadores. E podemos decidir qual acreditamos ser melhor para nossa aplicaçao.

Como posso fazer isso em um desenvolvimento Android usando Android Studio?

1 resposta

Na prática, Injeção de Dependência é simplesmente passar a um objeto suas dependências, evitando assim que o próprio objeto as instancie. Sendo assim, as formas mais simples de fazermos essa injeção são:

  • Injeção via método: a dependência é passada por algum argumento de um método (um setter funciona bem aqui).
class Celular {
    private Carregador carregador;

    public void setCarregador(Carregador carregador) {
        this.carregador = carregador;
    }
}
  • Injeção via construtor:
class Celular {
    private Carregador carregador;

    public Celular(Carregador carregador) {
        this.carregador = carregador;
    }
}

Existem situações em que as dependências possuem outras dependências, que possuem outras, cada uma com seu ciclo de vida... Aí podemos ter um grafo de dependências. Para gerenciar esse conjunto de dependências costumamos usar algum framework de injeção de dependências.

No Android, os mais conhecidos são o Dagger, o Koin e o Kodein. Sendo o Dagger o mais chatinho de ser configurado (e o maior também).

Sugestão: use frameworks de Injeção de Dependências somente se você tiver um grafo de dependências. Se você não tiver esse grafo, a simples passagem por parâmetros é a melhor escolha.