Buduję jedną aplikację na Androida przy użyciu MVP i mam jedno pytanie dotyczące tego wzorca.Prezentacja modelu - ten sam widok, różni prezenterowie
Załóżmy, że mam jeden ekran umożliwiający tworzenie nowej osoby. Ten ekran pokaże jeden EditText
do wstawienia nazwy, drugi do nazwiska, jeden ImageView
, aby pokazać wybrane zdjęcie, itp. To doprowadzi do jednego interfejsu View
, zaimplementowanego przez Fragment
. Będzie współpracować z jednym interfejsem Presenter
, implementowanym przez inną klasę.
Dobrze.
Teraz mam kolejną funkcję: ekran do edycji edycji istniejącej osoby. Tak się składa, że View
dla tej funkcji jest identyczny z tym, który służy do tworzenia nowej osoby. Jednak Presenter
jest inny. Rozpocznie się od załadowania istniejącej osoby z bazy danych, aby wstępnie wypełnić widok bieżącymi danymi, a czynność nad bazą danych po kliknięciu przycisku "zapisz" będzie aktualizacją zamiast wstawiania.
Uważam, że jest to przykład MVP , w którym jeden widok działa z różnymi implementacjami prezentera, aby uzyskać różne zastosowania:.
Czy uważasz, że to założenie jest poprawne, czy myślisz, że różne cechy powinien posiadać różne
View
iPresenter
interfejsy?Ponadto, jeśli bym ze wspólnym
View
i innymPresenters
będzie realizacjaView
być wspólne lub prowadziłoby do tego samego interfejsu realizowanego przez dwóch klas? W praktyce widzę dwie opcje.Mając tylko jeden
Fragment
realizacjiView
. W zależności od tego, czy użytkownik chce utworzyć nową osobę, czy zaktualizować istniejącą, Fragment powinien otrzymać i użyć innego prezentera.Posiadanie dwóch
Fragment
s. Każda z nich tworzy instancję innegoPresenter
. Użyj kompozycji lub dziedziczenia, aby uniknąć replikacji kodu między dwoma fragmentami.
Co sądzisz lepiej jest robić w takich przypadkach?
Dzięki.
Myślę, że jesteś na dobrej drodze. –
Możesz udostępnić to samo 'Widok' i mieć tylko jeden' Fragment', który otrzymuje inny 'Presenter' w zależności od jego przeznaczenia (edytuj lub utwórz). – pdegand59