Perché usare la dependency injection?
Renda il codice testabile e modulare.
Perché usare la dependency injection? è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.
Che cos'è la dependency injection?
La Dependency Injection (DI) consiste nel fornire a un oggetto ciò di cui ha bisogno dall'esterno, invece di permettergli di crearlo autonomamente.
Il problema: dipendenze rigide
Quando una classe crea autonomamente le proprie dipendenze, diventa fortemente accoppiata e difficile da modificare o testare.
class UserViewModel {
private val repo = UserRepository(
ApiClient(), AppDatabase.get()
) // tightly coupled
}La soluzione: usare l'injection
Passi le dipendenze tramite il costruttore. Alla classe non interessa più come vengono create.
class UserViewModel(
private val repo: UserRepository
) {
// repo supplied from outside
}Vantaggio 1: testabilità
Nei test può passare un repository fake o mock, così può testare il ViewModel senza una rete o un database reali.
val vm = UserViewModel(FakeUserRepository())Vantaggio 2: modularità
Poiché le classi dipendono da astrazioni, può sostituire le implementazioni — ad esempio un'API reale con uno stub offline — senza modificare il consumer.
Dipendere dalle interfacce
Faccia dipendere le classi da un'interfaccia, non da un tipo concreto. Questa è la chiave per una sostituzione semplice.
interface UserRepository {
suspend fun getUsers(): List<User>
}
class NetworkUserRepository(
private val api: ApiService
) : UserRepository { /* ... */ }Vantaggio 3: responsabilità singola
Le classi si concentrano sul proprio compito, non sulla costruzione dei collaboratori. La creazione degli oggetti viene spostata in un punto dedicato.
La DI manuale diventa complicata
Può eseguire la DI manualmente, ma quando il grafo cresce finisce per collegare molti oggetti a mano, facendoli passare attraverso i costruttori. È un lavoro tedioso e soggetto a errori.
val db = AppDatabase.get(context)
val api = ApiService.create()
val repo = NetworkUserRepository(api)
val vm = UserViewModel(repo)
// ...repeated everywhereEntra in gioco un framework DI
Un framework automatizza questi collegamenti. Dichiara una sola volta come creare ogni dipendenza e il framework costruisce l'intero grafo al posto Suo.
Perché Hilt
Hilt è il framework DI consigliato per Android. Basato su Dagger, fornisce componenti standard con scope associati alle classi Android (Application, Activity, ViewModel), con molto meno codice ripetitivo.
Cosa offre Hilt
- Generazione automatica del grafo delle dipendenze.
- Scope consapevoli del ciclo di vita.
- Injection semplice in Activity, Fragment e ViewModel.
Nelle prossime lezioni configurerà questi elementi.
Verifica rapida
Verifichi la Sua comprensione della dependency injection.
Riepilogo
Ha imparato:
- La DI fornisce le dipendenze dall'esterno invece di crearle internamente.
- Migliora la testabilità, la modularità e la separazione delle responsabilità.
- Faccia dipendere il codice dalle interfacce.
- La DI manuale scala male; Hilt la automatizza.
Domande Frequenti
La lezione «Perché usare la dependency injection?» è gratuita?
Sì — il testo completo di «Perché usare la dependency injection?» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.
Cosa imparerò in «Perché usare la dependency injection?»?
Renda il codice testabile e modulare. Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Android Academy?
Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Perché usare la dependency injection?»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Android Academy?
Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché usare la dependency injection?
- Configurare Hilt
- Moduli e provider
- Eseguire injection nei ViewModel