Wzorzec repozytorium
Przejrzyście pośrednicz między źródłami danych
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.
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
- Encje, DAO i baza danych
- Reaktywne zapytania zwracające Flow
- Wzorzec repozytorium
- Strategia buforowania offline-first