Android Academy · Les

Waarom dependency injection?

Maak code testbaar en modulair.

Les 1 van 413 stappen

Waarom dependency injection? is een gratis Android Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Android Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Android Academy bevat in totaal 4 lessen.

Wat is dependency-injectie?

Dependency Injection (DI) betekent dat je een object van buitenaf voorziet van wat het nodig heeft, in plaats van het dit zelf te laten maken.

Het probleem: harde afhankelijkheden

Wanneer een klasse zijn eigen afhankelijkheden opbouwt, raakt deze sterk gekoppeld en wordt hij moeilijk te wijzigen of te testen.

class UserViewModel {
    private val repo = UserRepository(
        ApiClient(), AppDatabase.get()
    ) // tightly coupled
}

De oplossing: injecteer in plaats daarvan

Geef afhankelijkheden door via de constructor. De klasse hoeft dan niet langer te weten hoe ze worden opgebouwd.

class UserViewModel(
    private val repo: UserRepository
) {
    // repo supplied from outside
}

Voordeel 1: testbaarheid

In testen kun je een fake of mock-repository doorgeven, zodat je de ViewModel test zonder een echt netwerk of een echte database.

val vm = UserViewModel(FakeUserRepository())

Voordeel 2: modulariteit

Omdat klassen afhankelijk zijn van abstracties, kun je implementaties omwisselen — bijvoorbeeld een echte API voor een offline stub — zonder de gebruiker ervan aan te passen.

Afhankelijk zijn van interfaces

Laat klassen afhangen van een interface, niet van een concreet type. Dat is de sleutel tot eenvoudige vervanging.

interface UserRepository {
    suspend fun getUsers(): List<User>
}

class NetworkUserRepository(
    private val api: ApiService
) : UserRepository { /* ... */ }

Voordeel 3: één verantwoordelijkheid

Klassen richten zich op hun taak, niet op het maken van hun samenwerkende objecten. Het maken van objecten verplaatst zich naar een daarvoor bestemde plek.

Handmatige DI wordt lastig

Je kunt DI met de hand doen, maar naarmate de grafiek groeit, verbind je uiteindelijk veel objecten handmatig met elkaar en geef je ze door via constructors. Dat is vervelend en foutgevoelig.

val db = AppDatabase.get(context)
val api = ApiService.create()
val repo = NetworkUserRepository(api)
val vm = UserViewModel(repo)
// ...repeated everywhere

Een DI-framework doet zijn intrede

Een framework automatiseert deze verbindingen. Je geeft één keer aan hoe elke afhankelijkheid moet worden opgebouwd, waarna het de hele grafiek voor je opbouwt.

Waarom Hilt

Hilt is het aanbevolen DI-framework voor Android. Het is gebaseerd op Dagger en biedt standaardcomponenten met een bereik dat aansluit op Android-klassen (Application, Activity, ViewModel), met veel minder boilerplate.

Wat Hilt je biedt

  • Automatische generatie van de afhankelijkheidsgrafiek.
  • Bereiken die rekening houden met de levenscyclus.
  • Eenvoudige injectie in Activities, Fragments en ViewModels.

In de volgende lessen stel je dit in.

Korte controle

Controleer je begrip van dependency-injectie.

Samenvatting

Je hebt geleerd:

  • DI levert afhankelijkheden van buitenaf in plaats van ze intern te maken.
  • Dit verbetert de testbaarheid, modulariteit en scheiding van verantwoordelijkheden.
  • Laat code afhangen van interfaces.
  • Handmatige DI schaalt slecht; Hilt automatiseert dit.
Gratis beginnen

Leer Kotlin met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
36
Lessen
152

Veelgestelde vragen

Is de les “Waarom dependency injection?” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Android Academy, waaronder “Waarom dependency injection?”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Android Academy bevat in totaal 4 lessen.

Wat leer ik in “Waarom dependency injection?”?

Maak code testbaar en modulair. Je oefent met Android Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Android Academy te beginnen?

Ervaring vooraf is niet nodig. Android Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Waarom dependency injection?”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Android Academy?

Ja. Elke les over Android Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Waarom dependency injection?
  2. Hilt instellen
  3. Modules en providers
  4. Injectie in ViewModels
← Terug naar Android Academy