Я создаю одно приложение для Android с помощью MVP, и у меня есть один вопрос об этом шаблоне.Модель View Presenter - тот же вид, разные ведущие
Скажем, у меня есть один экран для , создавая нового человека. На этом экране будет отображаться один EditText
для вставки имени, другого для фамилии, один ImageView
, чтобы показать выбранное фото и т. Д. Это приведет к одному интерфейсу View
, реализуемому Fragment
. Он будет сотрудничать с одним интерфейсом Presenter
, реализованным другим классом.
Изобразительное.
Теперь у меня есть еще одна особенность: экран для редактирование существующего лица. Как это бывает, View
для этой функции идентичен той, которая создана для создания нового человека. Однако, Presenter
отличается. Он начнется с загрузки существующего человека из db, чтобы предварительно заполнить представление текущими данными, а действие над базой данных при нажатии «сохранить» будет обновляться вместо вставки.
Итак, я думаю, что это пример MVP , где один просмотр работает с различными реализациями презентатора для достижения различных вариантов использования.
Как вы думаете, это правильное предположение, или вы думаете, различные функции должны иметь разные
View
иPresenter
интерфейсов?Кроме того, если бы с общим
View
и различныхPresenters
, будет реализацияView
быть общим, или это приведет к тому же интерфейс реализован двумя классами? На практике я вижу два варианта.Имея только один
Fragment
реализацииView
. В зависимости от того, собирается ли пользователь создать нового человека или обновить существующий, Фрагмент должен получить и использовать другой Ведущий.Имея два
Fragment
с. Каждый из них создавал бы экземпляр другогоPresenter
. Используйте композицию или наследование, чтобы избежать дублирования кода между двумя фрагментами.
Что вы думаете, что лучше делать в таких случаях?
Спасибо.
Я думаю, что вы на правильном пути. –
Вы можете поделиться одним и тем же «Просмотр» и иметь только один «Фрагмент», который получает различный 'Presenter' в зависимости от его назначения (редактировать или создавать). – pdegand59