13

Nowy Android Architektura Components opublikowane w Google IO 17.Android elementy architektury z MVP

Więc powinniśmy używać MVP z elementów architektonicznych i MVVM?

W próbce Google na Githubie zastosowano model MVVM. Google Sample

+0

Prosta odpowiedź brzmi "to zależy" - MVVM ma wyższą krzywą uczenia się niż standardowa architektura MVC, ale oferuje korzyści pod względem testowalności. Jednak tego rodzaju pytanie nie jest tak naprawdę tematem na temat StackOverflow. Zobacz [pomoc/temat] –

Odpowiedz

9

O wyborze wzoru architektonicznego i jego realizacji zależy zawsze od wielu czynników, takich jak członkowie zespołu, typy aplikacji i tak dalej.
W blogu Google, że już powiedział, że części składowe Architektura to głównie

nie opinie recept.

Jednak trzy główne komponenty (Room, ViewModel, ViewData) zostały opracowane z wykorzystaniem szerokiego zakresu, ale nie koncentrują się na żadnym konkretnym wzorze.
Na przykład

  • Jeśli używasz SQLite utrzymują lokalne dane w aplikacji, można Państwo pokój bez względu na rodzaj wzorca, którego używasz, jest to naprawdę wielka biblioteka z mnóstwem korzyści, takie jak redukcja kodów kotła kodów, sprawdzanie poprawności składni SQLite w czasie kompilacji itp.
  • Poza tym, LifeCycle, LiveData i ViewModel mają swoje mocne punkty . W szczególności bardzo dobrze radzą sobie z problemami związanymi z cyklem życia.
  • LiveData udostępnia jeszcze jedno narzędzie typu wzorzec obserwatora, który obsługuje strumień danych w sposób reaktywny. (Jak wspaniała funkcja, którą zapewnia nam RxJava).
  • ...

Na koniec, za pytanie.

Czy powinniśmy używać MVP z komponentami architektury?

Odpowiedź brzmi: "To dobra część systemu Android, więc dlaczego nie".

Aktualizacja:
Jeśli chcesz zobaczyć, jak projekt wzorca MVP współpracuje z nowymi elementami architektury, proszę kasy moje repository on Github. W którym ulepszam poprzedni model MVP, wykorzystując Room for local persistence i LifeCycle do tworzenia Presenter-świadomy cyklu życia.

+0

Dlaczego nie używasz komponentu architektury ViewModel w celu zachowania prezentera do odtwarzania aktywności lub zmian konfiguracji? Imho dałoby ci to wielkie korzyści: przyjrzałem się temu repozytorium github i bardzo mi pomogło -> https://github.com/armcha/MVP-Architecture-Components –

+0

Nie musisz używać ViewModel do tworzenia Prezentujący świadomy cyklu życia Aktywności. Po prostu wdraża LifecycleObserver, na przykład: https://github.com/quangctkm9207/mvp-android-arch-component/blob/master/app/src/main/java/com/quangnguyen/stackoverflowclient/ui/questions/QuestionsPresenter. java –

+0

Nie mówiłem o uświadamianiu cyklu życia prezentera. Mówiłem o specyfice viewmodeli, która ma przetrwać odtwarzanie aktywności. Nie musisz więc implementować onSaveInstanceState, onRestoreInstanceState i wszystkich tych rzeczy :) –

4

Jestem obecnie budowania projektu szablonu, który używa MVP wzorzec wraz ze składnikami Google Architektura (pokój, LiveData) i porównać mieszać wersji Realm i LiveData:

https://github.com/duyp/mvp-template

Myślę, że niektóre Komponenty Google Architektura są kompatybilne z MVP deseń, nie tylko dla MVVM: D

Możesz sprawdzić 2 following branches:

  • realm_livedata: MVP z Realm i LiveData

  • room_livedata: MVP z biblioteką utrwalania pokoju i LiveData

Jest to o wiele bardziej skomplikowane niż Google sample projektu (użyłem Dagger 2, RxAndroid, Modernizacja, Gson i czysta architektura) mam nadzieję, że znajdziesz lepsze rozwiązanie dla swojej pracy. Jeśli masz jakieś pytanie lub sugestię, możesz zostawić komentarze lub problemy na my github project.

ja też stworzył projektu przy użyciu MVVM z nowych elementów architektonicznych z Google Realm, sztylet 2, dane żywo: https://github.com/duyp/mvvm-template

Szczęśliwy kodowania!

Powiązane problemy