Por que usar injeção de dependências?
Torne o código testável e modular.
Por que usar injeção de dependências? é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.
O que é injeção de dependências?
Injeção de dependências (DI) significa fornecer a um objeto os elementos de que ele precisa externamente, em vez de permitir que ele mesmo os crie.
O problema: dependências rígidas
Quando uma classe cria suas próprias dependências, ela fica fortemente acoplada e difícil de alterar ou testar.
class UserViewModel {
private val repo = UserRepository(
ApiClient(), AppDatabase.get()
) // tightly coupled
}A solução: injete em vez disso
Passe as dependências pelo construtor. A classe deixa de se preocupar com a forma como elas são criadas.
class UserViewModel(
private val repo: UserRepository
) {
// repo supplied from outside
}Benefício 1: facilidade de teste
Nos testes, você pode passar um repositório falso ou simulado, permitindo testar o ViewModel sem uma rede ou banco de dados reais.
val vm = UserViewModel(FakeUserRepository())Benefício 2: modularidade
Como as classes dependem de abstrações, você pode trocar implementações — por exemplo, uma API real por uma implementação simulada offline — sem alterar o consumidor.
Dependa de interfaces
Faça as classes dependerem de uma interface, não de um tipo concreto. Essa é a chave para facilitar substituições.
interface UserRepository {
suspend fun getUsers(): List<User>
}
class NetworkUserRepository(
private val api: ApiService
) : UserRepository { /* ... */ }Benefício 3: responsabilidade única
As classes se concentram em sua função, não em construir os objetos colaboradores. A criação de objetos é transferida para um local dedicado.
A DI manual se torna difícil
Você pode fazer DI manualmente, mas, à medida que o grafo cresce, acaba conectando muitos objetos manualmente e passando-os pelos construtores. Isso é trabalhoso e propenso a erros.
val db = AppDatabase.get(context)
val api = ApiService.create()
val repo = NetworkUserRepository(api)
val vm = UserViewModel(repo)
// ...repeated everywhereEntra um framework de DI
Um framework automatiza essa conexão. Você declara uma vez como criar cada dependência, e ele constrói todo o grafo para você.
Por que usar Hilt
Hilt é o framework de DI recomendado para Android. Construído sobre o Dagger, ele fornece componentes padrão com escopo definido para classes do Android (Application, Activity, ViewModel), com muito menos código repetitivo.
O que Hilt oferece
- Geração automática do grafo de dependências.
- Escopos cientes do ciclo de vida.
- Injeção fácil em Activities, Fragments e ViewModels.
As próximas lições farão essa configuração.
Verificação rápida
Teste sua compreensão da injeção de dependências.
Recapitulação
Você aprendeu:
- DI fornece dependências externamente, em vez de criá-las internamente.
- Ela melhora a facilidade de teste, a modularidade e a separação de responsabilidades.
- Dependa de interfaces.
- A DI manual não escala bem; o Hilt a automatiza.
Perguntas Frequentes
A aula “Por que usar injeção de dependências?” é grátis?
Sim — o texto completo de “Por que usar injeção de dependências?” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.
O que vou aprender em “Por que usar injeção de dependências?”?
Torne o código testável e modular. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Android Academy?
Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Por que usar injeção de dependências?”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Android Academy?
Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar injeção de dependências?
- Configurando o Hilt
- Módulos e provedores
- Injetando em ViewModels