Aktualizacja z listopada 2018 r
Po kilku latach pracy i blogowania na temat MVC i MVP w Androidzie (patrz treść odpowiedzi poniżej), postanowiłem zebrać moją wiedzę i zrozumienie w bardziej kompleksowej i łatwo przyswajalnej formie.
Wydałem więc pełny kurs wideo na temat architektury aplikacji na Androida. Jeśli więc chcesz opanować najbardziej zaawansowane wzorce architektoniczne w rozwoju Androida, sprawdź ten kompleksowy kurs tutaj .
Ta odpowiedź została zaktualizowana, aby pozostała aktualna od listopada 2016 r
Wygląda na to, że szukasz wzorów architektonicznych zamiast wzorów .
Wzorce projektowe mają na celu opisanie ogólnej „sztuczki”, którą programista może zastosować do obsługi określonego zestawu powtarzających się zadań programowych. Na przykład: w OOP, gdy istnieje potrzeba, aby obiekt powiadamiał zestaw innych obiektów o niektórych zdarzeniach, można zastosować wzorzec projektowy obserwatora .
Ponieważ aplikacje na Androida (i większość AOSP) są napisane w Javie, która jest zorientowana obiektowo, myślę, że trudno będzie ci znaleźć pojedynczy wzorzec projektowy OOP, który NIE jest używany na Androidzie.
Z drugiej strony wzorce architektoniczne nie odnoszą się do konkretnych zadań oprogramowania - mają na celu dostarczenie szablonów do organizacji oprogramowania na podstawie przypadków użycia danego elementu oprogramowania.
Brzmi to trochę skomplikowanie, ale mam nadzieję, że przykład wyjaśni: jeśli jakaś aplikacja zostanie użyta do pobrania danych ze zdalnego serwera i przedstawienia go użytkownikowi w uporządkowany sposób, to MVC może być dobrym kandydatem do rozważenia. Zauważ, że nie mówiłem nic o zadaniach programowych i przebiegu programu - po prostu opisałem to z punktu widzenia użytkownika i pojawił się kandydat na wzór architektoniczny.
Ponieważ wspomniałeś w swoim pytaniu o MVC, zgaduję, że szukasz wzorów architektonicznych.
Historycznie nie było oficjalnych wytycznych Google dotyczących architektury aplikacji, co (między innymi) doprowadziło do całkowitego bałaganu w kodzie źródłowym aplikacji na Androida. W rzeczywistości nawet dzisiaj większość aplikacji, które widzę, nadal nie przestrzega najlepszych praktyk OOP i nie wykazuje wyraźnej logicznej organizacji kodu.
Ale dziś sytuacja jest inna - Google niedawno wydało bibliotekę Data Binding , która jest w pełni zintegrowana z Android Studio, a nawet wdrożyła zestaw planów architektury dla aplikacji na Androida .
Dwa lata temu bardzo trudno było znaleźć informacje o MVC lub MVP na Androida. Dzisiaj MVC, MVP i MVVM stały się „modnymi słowami” w społeczności Androida, a otaczają nas niezliczeni eksperci, którzy nieustannie próbują nas przekonać, że MVx jest lepszy niż MVy. Moim zdaniem omawianie, czy MVx jest lepszy od MVy, jest całkowicie bezcelowe, ponieważ same terminy są bardzo niejednoznaczne - wystarczy spojrzeć na odpowiedzi na to pytanie , a zdasz sobie sprawę, że różni ludzie mogą kojarzyć te skróty z zupełnie różnymi konstrukcjami.
Ponieważ oficjalnie rozpoczęto poszukiwanie najlepszego wzorca architektonicznego dla Androida, myślę, że wkrótce pojawi się kilka innych pomysłów. W tym momencie naprawdę nie można przewidzieć, który wzorzec (lub wzorce) stanie się standardami branżowymi w przyszłości - musimy poczekać i przekonać się (sądzę, że to kwestia roku lub dwóch).
Istnieje jednak jedna prognoza, którą mogę poczynić z dużym stopniem pewności: użycie biblioteki Data Binding nie stanie się standardem branżowym. Jestem pewien, że mogę to powiedzieć, ponieważ biblioteka Data Binding (w jej bieżącej implementacji) zapewnia krótkoterminowy wzrost wydajności i pewnego rodzaju wytyczne architektoniczne, ale na dłuższą metę sprawi, że kod nie będzie nadawał się do konserwacji. Gdy pojawią się długoterminowe efekty tej biblioteki - zostaną porzucone.
Teraz, chociaż mamy dzisiaj jakieś oficjalne wytyczne i narzędzia, osobiście nie sądzę, aby te wytyczne i narzędzia były najlepszymi dostępnymi opcjami (i zdecydowanie nie są jedynymi). W swoich aplikacjach korzystam z własnej implementacji architektury MVC. Jest prosty, czysty, czytelny i testowany i nie wymaga żadnych dodatkowych bibliotek.
To MVC nie tylko różni się kosmetycznie od innych - opiera się na teorii, że Działania w Androidzie nie są elementami interfejsu użytkownika , co ma ogromne konsekwencje dla organizacji kodu.
Jeśli więc szukasz dobrego wzorca architektonicznego dla aplikacji na Androida zgodnego z zasadami SOLID , możesz znaleźć opis jednego z moich postów na temat wzorców architektonicznych MVC i MVP w Androidzie .