Разница между шаблоном архитектуры MVP и MVVM в Android
Разработчики всегда предпочитают разработку приложения для Android с применением шаблона архитектуры программного обеспечения. Шаблон архитектуры придает модульность файлам проекта и гарантирует, что все коды будут охвачены модульным тестированием. Это облегчает разработчикам задачу по сопровождению программного обеспечения и расширению функций приложения в будущем. MVP (Model - View - Presenter) и Model - View - ViewModel (MVVM) - две самые популярные среди разработчиков архитектуры Android, признанные в отрасли.
Модель - представление - шаблон докладчика (MVP)
Шаблон архитектуры MVP обеспечивает простой способ структурировать коды проекта. Причина, по которой MVP получил широкое распространение, заключается в том, что он обеспечивает модульность, тестируемость, а также более чистую и удобную в обслуживании кодовую базу. Он состоит из следующих трех компонентов:
- Модель: слой для хранения данных. Он отвечает за обработку логики предметной области (бизнес-правила реального мира) и связь с базой данных и сетевыми уровнями.
- Вид: слой UI (пользовательского интерфейса). Он обеспечивает визуализацию данных и отслеживает действия пользователя, чтобы уведомить ведущего.
- Presenter: извлекает данные из модели и применяет логику пользовательского интерфейса, чтобы решить, что отображать. Он управляет состоянием представления и выполняет действия в соответствии с уведомлением пользователя о вводе из представления.
Модель - представление - шаблон ViewModel (MVVM)
Шаблон MVVM имеет некоторые сходства с шаблоном проектирования MVP (Модель - Представление - Презентатор), поскольку роль Презентатора играет ViewModel . Однако недостатки шаблона MVP были устранены с помощью MVVM. Он предлагает отделить логику представления данных (представления или пользовательский интерфейс) от основной части бизнес-логики приложения. К отдельным слоям кода MVVM относятся:
- Модель: этот уровень отвечает за абстракцию источников данных. Модель и ViewModel работают вместе, чтобы получить и сохранить данные.
- Представление: цель этого уровня - информировать ViewModel о действиях пользователя. Этот уровень соответствует ViewModel и не содержит никакой логики приложения.
- ViewModel: предоставляет те потоки данных, которые имеют отношение к View. Более того, он служит связующим звеном между моделью и представлением.
Разница между шаблоном проектирования MVP и MVVM
MVP (презентация представления модели) | MVVM (модель представления ViewModel) |
---|---|
Это решает проблему наличия зависимого представления за счет использования Presenter в качестве канала связи между моделью и представлением. | Этот шаблон архитектуры в большей степени ориентирован на события, поскольку он использует привязку данных и, таким образом, упрощает отделение основной бизнес-логики от представления. |
Между Presenter и View существует взаимно-однозначная связь. | Множественное представление можно сопоставить с помощью одной модели представления . |
Ведущий знает о Представлении. | ViewModel не имеет ссылки на View . |
Слой модели возвращает ответ на ввод пользователя в Presenter, который пересылает его в View . | После выполнения операций в соответствии с вводом пользователя уровень модели возвращает ответ представлению . |
Presenter обрабатывает поток приложения, а View - это фактическое приложение. | ViewModel - это фактическое приложение, а View - это интерфейс, с помощью которого пользователь может взаимодействовать с приложением. |
Файл проекта будет содержать больше классов, а также код. | Файл проекта будет содержать больше классов, но меньше кода для каждого класса. |
Идеально подходит для простых и сложных приложений. | Не идеален для небольших проектов. |
Простое выполнение модульного тестирования, но тесная связь View и Presenter может немного затруднить его. | Тестируемость модулей самая высокая в этой архитектуре. |