2017-03-29 19 views
6

Mam więc prezentera, który jest już związany z działaniem. Książka mówi, że jeden prezenter powinien być przywiązany do jednego widoku. Ale teraz dodaję kilka fragmentów i mnóstwo niestandardowych widoków. Rozważam również fragment, aby również był poglądem. Widoki niestandardowe będą zawierały trochę logiki. Zarówno fragmenty, jak i niestandardowe widoki są oczywiście zawarte w mojej działalności.Android MVP - czy mogę mieć wiele prezentacji dla niestandardowych widoków i fragmentów

Moje pytanie brzmi, czy powinienem ponownie użyć tego samego prezentera w widoku fragmentów i niestandardowych widoków, czy też każdy widok powinien mieć własnego prezentera? Rozumiem, że jest to oparte na opiniach, ale chcę najlepszego podejścia do testowania i utrzymywania kodu w czystości.

Jeśli mam jednego prezentera dla wszystkich tych nielicznych użytkowników, to interfejs używany przez prezentera będzie zawierał wiele metod wywołania zwrotnego. W międzyczasie, jeśli zrobię coś przeciwnego i utworzę jednego prezentera dla każdego widoku, łatwiej będzie go przeczytać, ale jak go przetestować?

Odpowiedz

5

View (Activity) może mieć wiele Presenters. W przypadku wielu numerów CustomViews dla Activity, możesz mieć jednego giganta Presenter lub Presenter za każde CustomView. To zależy od tego:

  1. Jeśli wszystko CustomViews akcje te same potrzeby, jeden Presenter dla wszystkich CustomViews wystarczy. Jeszcze dwie opcje Presenter's zakres:

    • Presenter ma ActivityScope. Activity używa Presenter i zostaje wywołana od Presenter. Następnie wysyła polecenia, dane do CustomViews
    • Presenter ma ViewScope. Każdy CustomView tworzy i niszczy samą Presenter

    w przypadku CustomViews nie dzielących te same potrzeby, mając jedną Presenter i ViewInterface, będą zawierać metody wszystkich CustomViews potrzeb, więc każdy CustomView musi wdrożyć wszystkie zadeklarowane metody w ViewInterface pozostaw niektóre puste.

  2. Jeśli CustomViews ma różne potrzeby i wywołania metod do Presenter, powinny one mieć własne Presenter.

  3. Jeśli CustomViews ma różne potrzeby, a także niektóre wspólne potrzeby, mają one wspólne potrzeby w jednym Presenter, specyficzne potrzeby we własnym Presenters. Przykład dla tego: ActivityOne ma CustomViewOne i CustomViewTwo. Często Presenter dla obu może być FeedPresenter (biorąc pod uwagę, że oba niestandardowe widoki mają listę kanałów). Następnie CustomViewOne będzie miał CustomPresenter1 i CustomViewTwo będzie miał CustomPresenter2 dla ich konkretnych potrzeb.
2

Najlepszą praktyką jest stworzenie basepresenter, a następnie utworzyć prezentera dla każdego widoku realizacji basepresenter

+0

Przy okazji, to było najlepsze podejście, jakie podążam teraz. – j2emanue