Jetpack Compose Academy · Lekcja

Wzorzec repozytorium

Przejrzyście pośrednicz między źródłami danych

Lekcja 3 z 413 kroki

Wzorzec repozytorium to bezpłatna lekcja Jetpack Compose Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Jetpack Compose Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Jetpack Compose Academy zawiera 4 lekcji w sumie.

Ukrywanie szczegółów danych

ViewModel nie powinien znać DAO ani sieci. repository ukrywa te szczegóły za przejrzystym, prostym interfejsem.

Jeden punkt dostępu do danych

repository to jedyne miejsce, z którego reszta aplikacji pobiera dane, niezależnie od tego, czy pochodzą one z Room, sieci czy pamięci.

Opakowanie DAO

Przekaż DAO do repozytorium i udostępnij za jego pomocą przyjazne metody. Wywołujący widzą notes, a nie zapytania SQL.

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

Udostępniaj akcje, nie tabele

Dodaj funkcje o konkretnym przeznaczeniu, takie jak addNote. Nazwa opisuje działanie, a mechanizm przechowywania pozostaje ukryty wewnątrz.

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

Swobodna zamiana źródeł

Ponieważ wywołujący zależą od repozytorium, możesz zamienić Room na atrapę lub zdalne API bez modyfikowania ViewModel.

Łatwiejsze testowanie

Testy mogą przekazać do ViewModelu atrapę repozytorium, dzięki czemu sprawdzisz logikę bez prawdziwej bazy danych na dysku. ✅

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

Wstrzykiwanie repozytorium

ViewModel otrzymuje repozytorium przez swój konstruktor i nigdy nie tworzy go bezpośrednio. Dzięki temu zależności są jawne.

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

Łączenie wielu źródeł

Repozytorium może łączyć pamięć podręczną i sieć, decydując, co zwrócić. Interfejs wysyła tylko jedno żądanie i pozostaje nieświadomy szczegółów implementacji.

Bezpośrednie przekazywanie Flow

W przypadku danych reaktywnych repozytorium może po prostu przekazywać dalej DAO Flow, dodając przekształcenia tylko wtedy, gdy aplikacja rzeczywiście ich potrzebuje.

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

Jedno repozytorium na dziedzinę

Repozytoria powinny mieć wąski zakres: jedno dla notatek, drugie dla użytkowników. Każde odpowiada za pojedynczy obszar danych i jego źródła.

Przejrzyste warstwy, jasne role

Interfejs wyświetla dane, ViewModel przechowuje stan, repozytorium je pobiera, a Room zapisuje. Każda warstwa ma jedno zadanie i można ją wymienić.

Szybkie sprawdzenie

Jakie jest główne zadanie repozytorium w tej architekturze?

Podsumowanie: przejrzysta warstwa pośrednia

Umieszczono repository między ViewModel a danymi, udostępniając akcje i Flow oraz ukrywając źródło danych. Następnie sprawisz, że aplikacja będzie działać w pierwszej kolejności offline.

Bezpłatny start

Ucz się Kotlin dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Wzorzec repozytorium” jest bezpłatna?

Tak — pełny tekst „Wzorzec repozytorium” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Jetpack Compose Academy, przejdź na CoddyKit PRO. Kurs Jetpack Compose Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wzorzec repozytorium”?

Przejrzyście pośrednicz między źródłami danych Ćwiczysz Jetpack Compose Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Jetpack Compose Academy?

Nie wymagamy żadnego doświadczenia. Jetpack Compose Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Wzorzec repozytorium”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Jetpack Compose Academy?

Tak. Każda lekcja Jetpack Compose Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Encje, DAO i baza danych
  2. Reaktywne zapytania zwracające Flow
  3. Wzorzec repozytorium
  4. Strategia buforowania offline-first
← Powrót do Jetpack Compose Academy