Jetpack Compose Academy · Lektion

Repository-mønsteret

Formidl mellem datakilder på en ren måde.

Lektion 3 af 413 trin

Repository-mønsteret er en gratis Jetpack Compose Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Jetpack Compose Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.

Skjul datadetaljerne

Din ViewModel bør ikke kende til DAO'er eller netværk. Et repository skjuler disse detaljer bag en ren og enkel interface.

Én indgang til data

repository er det ene sted, resten af appen spørger efter data, uanset om de kommer fra Room, netværket eller hukommelsen.

Pak DAO'en ind

Giv repository'et DAO'en, og lad det eksponere brugervenlige metoder. Kaldere ser notes, ikke SQL-forespørgsler.

class NoteRepository(private val dao: NoteDao) {
    val notes = dao.observeAll()
}

Eksponér handlinger, ikke tabeller

Tilføj formålsbestemte funktioner som addNote. Navnet fortæller, hvad der sker, mens lagringsmekanismen forbliver skjult indeni.

suspend fun addNote(text: String) = dao.insert(Note(text = text))

Skift frit mellem datakilder

Fordi kaldere afhænger af repository'et, kan du skifte fra Room til en fake eller en ekstern API uden at ændre ViewModel.

Nemmere at teste

Tests kan give ViewModel et fake repository, så du kan kontrollere logikken uden en rigtig database på disken. ✅

class FakeRepo : NoteRepository { /* in-memory */ }

Inject repository'et

ViewModel modtager repository'et gennem sin constructor og opretter det aldrig direkte. Det holder afhængighederne tydelige.

class NoteViewModel(private val repo: NoteRepository) : ViewModel()

Kombinér flere datakilder

Et repository kan sammenflette cache og netværk og beslutte, hvad der skal returneres. Brugerfladen spørger bare én gang og forbliver unaware om forbindelserne bagved.

Send Flows direkte videre

For reaktive data kan repository'et ganske enkelt videresende DAO'ens Flow og kun tilføje transformationer, når appen faktisk har brug for dem.

val notes: Flow<List<Note>> = dao.observeAll()

Ét repository pr. domæne

Hold repositories fokuserede: ét til noter, ét til brugere. Hvert af dem ejer ét single dataområde og dets datakilder.

Rene lag, tydelige roller

UI viser data, ViewModel indeholder state, repository henter den, og Room gemmer den. Hvert layer har én opgave og kan udskiftes.

Hurtigt tjek

Hvad er repository'ets vigtigste opgave i denne arkitektur?

Opsamling: Et rent mellemlag

Du placerede et repository mellem ViewModel og dine data og eksponerede handlinger og Flows, mens kilden blev skjult. Nu skal du få det til at fungere offline først.

Gratis at komme i gang

Lær Kotlin med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Repository-mønsteret” gratis?

Ja — hele teksten til “Repository-mønsteret” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Jetpack Compose Academy-kurset, skal du opgradere til CoddyKit PRO. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Repository-mønsteret”?

Formidl mellem datakilder på en ren måde. Du øver dig i Jetpack Compose Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Jetpack Compose Academy?

Der kræves ingen tidligere erfaring. Jetpack Compose Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Repository-mønsteret”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Jetpack Compose Academy-lektion?

Ja. Alle Jetpack Compose Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Entiteter, DAO'er og databasen
  2. Reaktive forespørgsler, der returnerer Flow
  3. Repository-mønsteret
  4. Offline-first-cachingstrategi
← Tilbage til Jetpack Compose Academy