2015-12-28 6 views
7

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

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

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

Это правильно?

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

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

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

Возможно, это очищает мое видение (способ мышления) об этом ... Maybe this clears up my vision about this...

+0

Я бы не сказал, что MVP отлично работает для * каждого * приложения android. Это полностью зависит от того, что вы хотите сделать. Я использовал MVP для своего собственного приложения для Android, и я думаю, что он сильно очищает код, от того, что основная часть кода в ваших действиях и фрагментах. Тем не менее, был интересный разговор от Yigit - https://www.youtube.com/watch?v=BlkJzgjzL0c, который, похоже, не использует MVP. Еще одну интересную статью можно найти здесь о MVP: https://medium.com/ribot-labs/android-application-architecture-8b6e34acda65 – riggaroo

+0

Спасибо, я буду смотреть видео завтра. Но знаете ли вы, верно ли то, что я написал о MVP? – RoDo

+0

Еще один действительно хороший пример использования MVP можно найти здесь: https://codelabs.developers.google.com/codelabs/android-testing/index.html?index=..%2F..%2Findex#0. Что описывает, как реализовать MVP. Я бы сказал, что представление - это Activity/Fragment, ведущий - отдельный класс, который выполняет действия над представлением, а модель - это POJO, связанные с представлением. – riggaroo

ответ

9

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

Я думаю, что вы получили его суть:

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

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

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

+0

Спасибо, это объясняет много для меня, и я думаю, что мое видение MVP в случае Android правильное. Теперь мне любопытно, правильно ли связана моя связь с 3-слойной архитектурой. – RoDo

1

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

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

enter image description here

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

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

Если Вам необходима дополнительная информация о ПМК в контексте развития Android, вы можете найти его в этом посте: MVP and MVC Architectural Patterns in Android

0

Как вы узнали основы чистого 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. 
     } 
    } 

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

0

Здесь на GitHub https://github.com/saksham24/Android-Firebase-Mvp-Mvc-Mvvm-chat я сделал репо, содержащий 3 приложение с тем же функциональностью но записаны в 3 разных андроидных рисунках (Mvc, Mvp, Mvvm)

Понимание t Весьма простой шаблон, если мы получим простой хороший пример, поэтому я сделал репо, чтобы внести свой вклад в это сообщество разработчиков. Также репозиторий написан с использованием правильных инструкций и условных обозначений java (включая имена и пакеты, модули), поэтому пользователи, которые ищут такой проект, также могут просматривать этот репозиторий.

Теперь

  1. , если вы хотите узнать разницу между андроидом ПКА Mvc, MVVM увидеть это объяснение по области https://academy.realm.io/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android/

  2. , если вы хотите, чтобы сравнить три картины увидеть это чудо полного блог https://thinkmobiles.com/blog/mvp-vs-mvvm-android-patterns/