По
best practices взаимодействие двух фрагментов организовывается через Activity, которое их хостит.
Среди предложенных вариантов мне больше всего мне нравится вариант 3.
В рамках задачи я бы сделал Activity = MasterView, и общался бы Presenter'ом c Activity. Далее Activity служило бы Mediator'om и неким координатором для фрагментов.
НО.
Предлагаю рассмотреть схему с двумя Presenter'ами. Первый отвечает за загрузку списка маркером и работает с MyListFragment, второй за работу с картой и привязан к MyMapFragment.
А медиатором все так же является Activity с интерфейсами.
Как это будет работать? (внешний код опущен)
MyListFragment://MapInterface реализует Activity для взаимодействия между фрагментами.
mMapInterface.onMarkerSelected(marker);
Activity:public void onMarkerSelected(Marker marker) {
mMapFragment.selectMarker(marker);
}
MapFragment:public void selectMarker(Marker marker) {
//например грузим информацию по маркеру
mMapPresenter.loadMarkerInfo(marker, someCallback).
//или просто производим манипуляции со View.
}
Также:
Если же операции, выполняемые с Моделью одинаковые, то можно обойтись один презентером, но все равно он будет дергаться из Фрагментов. Потому что, раз мы говорим о хорошем дизайне, в случае дальнейшего усложенения логики Фрагментов, лучше чтоб каждый хостил свой Презентер.
С удовольствием подискутирую на тему.
Спасибо!