Как разделить View и Presenter в Android, в то время как реакции на действия пользователя (Presenter часть MVP) устанавливаются в те же действия, что и элементы GUI (View part of MVP).
«В представлении модельного представления, как говорят Мартин Фаулер или Майкл Фезерс [2], логика пользовательского интерфейса разделена на класс, называемый презентатор, который обрабатывает все вводимые пользователем данные и сообщает« тупому »виду, что и когда дисплей "(цитируется здесь ).
До сих пор я думал, что одной из основных функций Android является интеллектуальная активность, которая выполняет действия, реагирует на них и показывает результаты. Противоречит ли схема MVP философии Android? Есть ли смысл пытаться реализовать это на Android? Если да, как это можно сделать?
programmers
вопросам более спорный вопрос "что вы думаете о ../ это хорошо или плохо ...", хотяstackoverflow
больше будет похоже на "Есть ли примеры mvp в Android". Для меня оба места в порядке.Ответы:
Приложения Android основаны на Model-View-Controller (MVC) - MVP звучит как то же самое, хотя я раньше не слышал этого термина. Упражнения выполняют роль контроллера, представления XML являются именно этим (хотя вы можете создавать их программно в действии - все проще и проще делать это в XML), а также моделью, которую вы пишете сами. Так что да, эта модель довольно практична.
Возможная причина, по которой вы, возможно, мало что слышали об этой модели дизайна, заключается в том, что платформа Android заставляет вас отделить представление. Поскольку приложения на мобильных устройствах имеют тенденцию быть маленькими, люди не склонны использовать полноценный MVC; они стремятся к слоям вида и действия, где слой действия выполняет большую часть (небольшой) работы модели.
Если вы пишете кроссплатформенное приложение, вам может понадобиться четырехуровневый подход: представление, действие, бизнес-логика и модель. Слои View и Action будут зависеть от платформы, а Business Logic и Model не изменятся. По сути, вы разделяете взаимодействие докладчика и пользователя с уровнем Action, который вызывает уровень Business Logic для выполнения действия, которое хочет пользователь.
источник
Action
(= Presentation) независимой - по крайней мере, когда ваши разные платформы предлагают схожие возможности пользовательского интерфейса.У меня нет никакого опыта в программировании на Android, но, кратко изучая некоторые вводные учебники по программированию на Android, я не вижу причины, почему MVP должен быть менее полезным, чем в любой другой среде, управляемой событиями.
Activity
Класс не сильно отличается отDialog
илиForm
в других рамках, поэтому она должна быть легко создать класс «Activitity Presenter» для любого подкласса активности вашего приложения и поставить основную логику там.События, отправляемые вашей «Деятельности», должны быть делегированы вашему докладчику, и если ваш докладчик собирается отправлять события самостоятельно или вызывать другие зависящие от системы функции, ваша активность должна предоставлять связанные функции через интерфейс, который она разделяет с докладчиком. Но это в основном то же самое, что и в любой другой среде GUI, о которой я знаю.
источник
MVP определенно полезен для Android. Это помогает организовать и протестировать ваш код. И самое приятное, что новые люди, читающие ваш код, смогут понять код и вскоре начнут вносить свой вклад, когда будут знать, что и куда нужно делать. Вот очень полезная ссылка для понимания MVP с примерами .
Вот краткое объяснение всех трех компонентов MVP
Посмотреть
В android MVP представление содержит две вещи Activity - представление ресурсов android - интерфейс java Activity Реализует представление и внедряет себя (интерфейс View) в презентатора, чтобы докладчик мог общаться с действием, используя интерфейс представления. Первые три блока диаграммы показывают связь между View и Presenter.
Ведущий
Presenter выступает в качестве промежуточного слоя между View и Data / Model. View (Activity) подает команду Presenter для представления чего-либо, а Presenter затем берет данные из базы данных / Model и возвращает презентабельную форму данных в View. View затем заботится о отображении этих данных на экране. И помните, что Presenter - это простой Java-класс, он не должен включать в себя ни один из компонентов Android, иначе это затруднит модульное тестирование презентатора.
Если вы хотите использовать базу данных в презентаторе, сделайте упражнение, создайте экземпляр базы данных и вставьте его в презентатор. Это поможет вам смоделировать базу данных во время модульного тестирования и позволит вам проверить бизнес-логику.
модель
Модель в MVP - это не что иное, как ваш источник данных. View не обращается к данным напрямую, вместо этого он приказывает Presenter обработать данные для них и вернуть информацию, которая может быть отображена без каких-либо дальнейших изменений.
источник