2014-07-24 6 views
7

Chcę zaimplementować moją kolejną aplikację ze wzorem MVP, więc zacząłem czytać artykuły o tym, jak powinno to zostać zaimplementowane. Głównym problemem dla mnie jest to, że istnieją różne podejścia do tego schematu. Niektórzy twierdzą, że powinniśmy traktować działalność jako widok, ale niektórzy inni, że działalność powinna być prezenterem.Android MVP - czy działanie powinno być widokiem lub prezenterem?

Aktywność jako widoku jest opisana tutaj: MVP Android i ma to sens. Ale z drugiej strony znalazłem tę odpowiedź za pomocą kilku upvotes https://stackoverflow.com/a/7609943 i ktoś powiedział, że działalność powinna być prezenterem.

Czy ktoś ma doświadczenie z tym wzorem?

Odpowiedz

2

Uważam, że można bezpiecznie uznać zajęcia za prezentera. Widok można uznać za plik XML układu. Prezentujący jest czymś, co ma bezpośrednie połączenie z Modelem (-ami), jak również Widok (-y), jak wspomniano w odpowiedzi, którą napisałeś powyżej. W działaniu łączysz się z Widokami i pozostajesz w pośredni między Widokami i Modelami, co jest efektywnie funkcjonalnością Prezentera. Bierze on zdarzenia wejściowe z widoku (ów) i ustawia wartości otrzymane z modeli, które mają być wyświetlane w widoku (ach).

+2

Widok nie sugeruje szczegółów implementacji. Widok to tylko abstrakcja, którą można zaimplementować na wiele sposobów (widok GWT, widok fałszywy, widok oparty na systemie Android).Naprawdę uważam, że działanie w systemie Android jest bliższe Viewowi, ponieważ działanie ma na celu poznanie szczegółów implementacji (bazowego układu XML itd.). W testowaniu jednostkowym, gdy prezenter jest działalnością, wiąże cię mocno ze środowiskiem Android, podczas gdy osobny prezenter z niezależną warstwą podglądu daje o wiele większą elastyczność (możesz w łatwy sposób przetestować swoich prezenterów za pomocą 'mvn test' w ten sposób). –

+0

Więc co proponujesz jako prezenter? –

+1

Jak już wspomniałem powyżej, prezenter powinien być pośrednikiem w poglądowej warstwie pośredniej. Na przykład może to być prosta klasa, która odwołuje się do modelu i widoku za pośrednictwem interfejsów w najprostszym przypadku i może dyktować interakcję i przepływ pracy między modelem a widokiem. Przypuśćmy, że masz takiego prezentera, który może być łatwo ponownie użyty w różnych środowiskach: Android, GWT itp. –

8

Po chwili namysłu myślę, że aktywność powinna być traktowana jako widok. Jeśli oddzielimy logikę biznesową od działania, wówczas łatwo będzie zastąpić działanie fragmentem lub widokiem. Będziemy mogli nawet pobrać nasze modele i prezentery i wykorzystać je w aplikacji komputerowej, dodając do nich nowe widoki. Lepiej też dla celów testowych stworzyć prezentera jako normalny obiekt, a nie aktywność.

7

Aktywność jest bardzo zbliżona do układu, więc powinien to być widok. Twoja logika biznesowa powinna znajdować się w podglądzie utworzonym przez Twoją aktywność. Aby zrozumieć więcej o MVP przyjrzeć - MVP for android

enter image description here

0

MVP Termin View jest przeciążony tutaj, android widok jest inny niż widok miał być stosowany we wzorze MVP. View to interfejs, który ma być implementowany przez Activity/Fragment. Możesz rzucić okiem na Official Android MVP Examples.

Proponuję rozpocząć od basic one. Oto przepływ ze strony.

enter image description here

+0

ze względu na dokumenty, które polecasz "W tej wersji aplikacji Activity jest ogólnym kontrolerem, który tworzy i łączy widoki i prezenterów . " – YTerle

Powiązane problemy