Po lekturze artykułu z tej strony postanowiłem zastosować w swojej aplikacji wzorzec MVP. Założenia mniej więcej rozumiem i wydaje się to być ciekawym rozwiązaniem. Jednak natrafiłem na pewien problem.
Otóż jak rozwiązać komunikację pomiędzy prezenterami?
Przykładowo:
Mam MainActivity, które posiada przyciski służące do zmiany fragmentów w FrameLayout w tym samym layoucie.
MainActivity implementuje widok, który przekazywany jest do prezentera(MainPresenter). Prezenter po otrzymaniu sygnału od widoku o naciśnięciu przycisku podmienia w widoku fragment. Każdy fragment również jest widokiem i ma swojego prezentera(np FragmentPresenter). Na tę chwilę inicjuję prezenterów w widokach. Co w przypadku jeżeli jeden fragment zażyczy sobie zmiany fragmentu w MainActivity na inny?
Czy prawidłowym rozwiązaniem będzie wykorzystanie np. EventBusa? FragmentPresenter wysyła sygnał do MainPresenter. Czy nie jest tu problemem, że FragmentPresenter jest zależny od MainPresenter? Nie łamie to jakichś zasad o których jeszcze nie wiem?
EventBus będzie ok, chociaż można ten problem rozwiązać na wiele sposobów.
Dobre rozwiązanie prezentuje Clean Architecture, gdzie za decyzję o aktualizacji MainPresentera odpowiada odseparowana od presenterów warstwa logiki specyficznej dla aplikacji (Use Cases) implementowana w postaci obiektów Interactor.
Po lekturze artykułu z tej strony postanowiłem zastosować w swojej aplikacji wzorzec MVP. Założenia mniej więcej rozumiem i wydaje się to być ciekawym rozwiązaniem. Jednak natrafiłem na pewien problem.
Otóż jak rozwiązać komunikację pomiędzy prezenterami?
Przykładowo:
Mam MainActivity, które posiada przyciski służące do zmiany fragmentów w FrameLayout w tym samym layoucie.
MainActivity implementuje widok, który przekazywany jest do prezentera(MainPresenter). Prezenter po otrzymaniu sygnału od widoku o naciśnięciu przycisku podmienia w widoku fragment. Każdy fragment również jest widokiem i ma swojego prezentera(np FragmentPresenter). Na tę chwilę inicjuję prezenterów w widokach. Co w przypadku jeżeli jeden fragment zażyczy sobie zmiany fragmentu w MainActivity na inny?
Czy prawidłowym rozwiązaniem będzie wykorzystanie np. EventBusa? FragmentPresenter wysyła sygnał do MainPresenter. Czy nie jest tu problemem, że FragmentPresenter jest zależny od MainPresenter? Nie łamie to jakichś zasad o których jeszcze nie wiem?
Dobre rozwiązanie prezentuje Clean Architecture, gdzie za decyzję o aktualizacji MainPresentera odpowiada odseparowana od presenterów warstwa logiki specyficznej dla aplikacji (Use Cases) implementowana w postaci obiektów Interactor.