2015-05-12 13 views
6

Я создаю одно приложение для Android с помощью MVP, и у меня есть один вопрос об этом шаблоне.Модель View Presenter - тот же вид, разные ведущие

Скажем, у меня есть один экран для , создавая нового человека. На этом экране будет отображаться один EditText для вставки имени, другого для фамилии, один ImageView, чтобы показать выбранное фото и т. Д. Это приведет к одному интерфейсу View, реализуемому Fragment. Он будет сотрудничать с одним интерфейсом Presenter, реализованным другим классом.

Изобразительное.

Теперь у меня есть еще одна особенность: экран для редактирование существующего лица. Как это бывает, View для этой функции идентичен той, которая создана для создания нового человека. Однако, Presenter отличается. Он начнется с загрузки существующего человека из db, чтобы предварительно заполнить представление текущими данными, а действие над базой данных при нажатии «сохранить» будет обновляться вместо вставки.

Итак, я думаю, что это пример MVP , где один просмотр работает с различными реализациями презентатора для достижения различных вариантов использования.

  1. Как вы думаете, это правильное предположение, или вы думаете, различные функции должны иметь разные View и Presenter интерфейсов?

  2. Кроме того, если бы с общим View и различных Presenters, будет реализация View быть общим, или это приведет к тому же интерфейс реализован двумя классами? На практике я вижу два варианта.

    • Имея только один Fragment реализации View. В зависимости от того, собирается ли пользователь создать нового человека или обновить существующий, Фрагмент должен получить и использовать другой Ведущий.

    • Имея два Fragment с. Каждый из них создавал бы экземпляр другого Presenter. Используйте композицию или наследование, чтобы избежать дублирования кода между двумя фрагментами.

Что вы думаете, что лучше делать в таких случаях?

Спасибо.

+0

Я думаю, что вы на правильном пути. –

+0

Вы можете поделиться одним и тем же «Просмотр» и иметь только один «Фрагмент», который получает различный 'Presenter' в зависимости от его назначения (редактировать или создавать). – pdegand59

ответ

0

Вы столкнетесь с этим, когда создаете CRUD-приложение, используя шаблон MVP на Android.

Вы можете очень легко просто иметь единственный вид, до тех пор, как вы документ хорошо в своем классе, что осущ «Вид» для двух различных предъявителей, то это нормально "


Я бы лично предложите создать 2 вида, один для «создать» и один для «редактирования» (они могут быть одинаковыми (пока), но разделение их дает понять, что они - разные вещи.)

Вы можете легко увидеть ситуацию в будущем (или другое значение этого шаблона), где ваши представления «создавать» и «редактировать» на самом деле имеют разные API. Или немного разные визуальные подсказки, такие как кнопка с надписью «create/add» в одном и «обновление» в другой.

Я лично сделал класс-библиотеку/вспомогательный класс, из которого оба вида вызывают логику. Это должно помочь вам сократить общую LoC, даже если вы делаете 2-го класса. Преимущество этого заключается в том, что вы легко изменяете виды создания/редактирования, не беспокоясь о влиянии на другие. (Я склонен думать, что файлы с двумя представлениями будут легче поддерживать в будущем, когда есть даже небольшое отклонение между Create/Edit)

 Смежные вопросы

  • Нет связанных вопросов^_^