Android
2019-06-21
Model odzwierciedla najbardziej backendową stronę architektury MVP. To tutaj zawarte są połączenia do baz danych, logika biznesowa czy obiekty POJO.
Nie znasz MVP, albo nie widzisz różnicy pomiędzy MVP a MVC. Nie szkodzi ja też do niedawna nie widziałem. Więcej możesz poczytać tutaj:
MVC vs. MVP vs. MVVM on Android
Kod zaprezentowany w tym poście jest częścią mojej przykładowej aplikacji. Jej źródło znajdziesz tutaj:
MVPWithFirebase
Pierwszą część o View znajdziesz tutaj:
MVP w Androidzie - View
Moment od którego powinniśmy zacząć budowanie logicznej strony są entities (jednostki).
Enkapsulują one dane i są obiektami, z których chcemy finalnie wyciągać dane. W kotlinie dla przykładu użyjemy data class.
Data class
Takie obiekty pozwolą także na rzutowanie danych z Firebase.
Kolejną zaletą architektury MVP jest to, że możemy szybko wybrać lub edytować źródło danych bez konieczności zmiany kodu w widokach.
W sytuacji kiedy użytkownik nie będzie miał dostępu do internetu aplikacja wybierze lokalną bazę danych.
Bez względu czy dane będą z Firebase czy z bazy lokalnej, to zawsze chcemy obsłużyć 3 przypadki:
I to prowadzi nas do wniosku, że dobrze by było mieć interfejs, który będzie implementować jakiekolwiek źródło danych.
Oczywiście przyda się także funkcja, którą poprosimy
o dane z prezentera. Jest nią getTopics, gdzie ref określa konkretną gałąź w Firebase.
Teraz przedstawię pobieranie danych z Firebase
Linijka 11 i 12 to połączenie do bazy i lista obiektów, następnie addValueEventListener poprzez onDataChange przekazuje nam na raz wszystkie dane zgodne z ref.
Iterując po dzieciach
tworzymy jednostki Topic i na sam koniec za pomocą GetTopicsCallback przekazujemy dane.
Nieco więcej o Firebase piszę tutaj:
Firebase + Kotlin - bazy danych w Android
Pozostaje jeszcze kwestia lokalnej bazy danych
Krótko mówiąc klasa znów zwraca nam obiekty z tą różnicą, że posiada dodatkowo metody do zapisu i odczytu z pamięci urządzenia.
Dokładniej zapis i odczyt realizowany jest przy pomocy GSON oraz SharedPreferences.
GsonHelper
SharedPrefsHelper
W ostatniej części skupię się na opisaniu Presenter oraz wytłumaczeniu schematu komunikacji pomiędzy elementami architektury.
Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊
Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.
Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.