Android MVP объяснение

Я пытаюсь понять, как лучше всего программировать «чистое» приложение для Android. Я нашел интересную статью об этом, где они используют своего рода трехслойную архитектуру.

Теперь я прочитал, что андроид использует шаблон дизайна MVP и пытается понять это. То, как я понимаю принцип MVP (в контексте Android), заключается в следующем:

  • Уровнем модели являются логические классы
  • Ведущий – это классы, которые «связаны» с XML (действия)
  • Пассивное представление – это XML.

Это верно?

Когда это правильно, правильно ли тогда, что модель на 3 слоя идеально подходит в принципе MVP, потому что:

  1. Уровень представления из трехслойной архитектуры соответствует уровню презентатора MVP
  2. Бизнес и уровень данных из трехслойной архитектуры идеально подходят в модельной части MVP?

Надеюсь, мои вопросы ясны, потому что это сложная тема для меня.

Может быть, это очищает мое видение (образ мышления) об этом …. Возможно, это очищает мое видение об этом ...

Первое, что я хотел уточнить, – это то, что MVP или любой другой шаблон, если на то пошло, не являются специфическими для Android dev и могут применяться к любой другой структуре.

Я думаю, вы поняли суть этого:

  • Просмотр обычно осуществляется посредством действий и фрагментов и будет содержать ссылку на докладчика
  • Ведущий – это средний человек между взглядом и моделью. Извлекает данные из модели и возвращает их уже отформатированным в представление, поэтому ему не нужно ничего делать, кроме как отображать его.
  • Модель можно рассматривать упрощенно как «поставщик данных». Он может быть настолько сложным, насколько вы хотите, используя внутренние db, много кладов и т. Д.

Если вас интересует архитектура Android-приложений, я предлагаю вам посмотреть этот разговор на саммите Android dev в этом году. Это один из лучших результатов, которые я видел

https://www.youtube.com/watch?v=BlkJzgjzL0c

Несмотря на то, что у этого вопроса есть ответ, я не думаю, что этот ответ завершен каким-либо образом.

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

Введите описание изображения здесь

Независимо от реализации, общие определения компонентов MVP:

  • Модель: абстракция «хранения состояния приложения». Определение того, что такое «состояние» и как оно хранится, – это детали реализации. Реализации модели не должны иметь зависимости от View или Presenter.
  • Вид: абстракция «пользовательского интерфейса». Определение того, кто является «пользователем» и как он взаимодействует с представлением, – это детали реализации. Представления представления не должны иметь зависимости от модели или презентатора.
  • Ведущий: инкапсулирует бизнес-логику приложения. Ведущий обрабатывает события ввода пользователя, полученные из представления, и изменяет состояние приложения, сохраненное в модели в ответ. Presenter также обрабатывает изменения состояния приложения, сохраненные в представлении модели и обновлений в ответ. Презентатор обычно зависит как от вида, так и от модели.

Если вам нужна дополнительная информация о MVP в контексте разработки Android, вы можете найти ее в этом сообщении: MVP и MVC Architectural Patterns на Android

По мере того как вы узнали основы Clean Architechure. В следующем примере показано, как реализуется ваш шаблон MVP.

Пример:

interface BaseContract { interface BaseView { //Methods for View void onDoSomething(); } interface BasePresenter { void doSomething(); } } class BaseMainPresenter implements BaseContract.BasePresenter { BaseContract.BaseView view; BaseMainPresenter(BaseContract.BaseView view) { this.view = view; } @Override public void doSomething() { if (view != null) view.onDoSomething(); } } class DemoClass implements BaseContract.BaseView { //Create object of Presenter /**** * Example : * BaseMainPresenter baseMainPresenter = new BaseMainPresenter(this); */ @Override public void onDoSomething() { //Deal with Context here. } } 

См. Ниже ссылку для примера. Фактическая реализация со сценарием и узнать больше о Clean Architechure: https://github.com/android10/Android-CleanArchitecture

Intereting Posts
Как отобразить папку bin в проекте Android в eclipse? Профилирование использования батареи Android Java – java.lang.IllegalStateException: Не удалось прочитать строку 0, col -1 из CursorWindow Как защитить вызов веб-сервиса в Android Запись файла в системный раздел Обновление Android Studio 2.2: выровненный APK (zipAlign), не сгенерированный с использованием нового Gradle Plugin 2.2.0 Как установить связь с Android-службой Создать границы на андроидном представлении в drawable xml, с трех сторон? Изменить фоновый альфа-код кнопки без изменения значения альфа-текста в Android? Android: layout_centerInParent не работает Как надежно определить ширину многострочной строки? Как создать редактируемый счетчик в Android? Добавить событие Click to Expandable List View Child, расширяя активность вместо активности? VM с версией 1.6.0 не поддерживает multidex: не удается найти приложение Mono.Android.Platform.ApiLevel_23 или Xamarin.Android.Platform В чем разница между сообщением widget post () и обработчиком ()?