Разница между шаблоном архитектуры MVC и MVVM в Android
Разработчики всегда предпочитают разработку приложения для Android с применением шаблона архитектуры программного обеспечения. Шаблон архитектуры придает модульность файлам проекта и гарантирует, что все коды будут охвачены модульным тестированием. Это облегчает разработчикам задачу по сопровождению программного обеспечения и расширению функций приложения в будущем. MVC (Модель - Представление - Контроллер) и MVVM (Модель - Представление - ViewModel) - две самые популярные архитектуры Android среди разработчиков.
Шаблон "Модель — Представление — Контроллер" (MVC)
Шаблон MVC предлагает разделить код на 3 компонента. При создании класса / файла приложения разработчик должен разделить его на один из следующих трех уровней:
- Модель: этот компонент хранит данные приложения. Он ничего не знает об интерфейсе. Модель отвечает за обработку логики предметной области (бизнес-правила реального мира) и взаимодействие с базой данных и сетевыми уровнями.
- Представление: это слой пользовательского интерфейса (пользовательского интерфейса), который содержит компоненты, видимые на экране. Кроме того, он обеспечивает визуализацию данных, хранящихся в модели, и предлагает взаимодействие с пользователем.
- Контроллер: этот компонент устанавливает связь между представлением и моделью. Он содержит основную логику приложения, получает информацию об ответе пользователя и обновляет Модель в соответствии с потребностями.
Модель - представление - шаблон ViewModel (MVVM)
Шаблон MVVM имеет некоторое сходство с шаблоном проектирования MVP (Модель - Представление - Презентатор), поскольку роль Презентатора играет ViewModel. Однако недостатки шаблона MVP были устранены с помощью MVVM. Он предлагает отделить логику представления данных (представления или пользовательский интерфейс) от основной части бизнес-логики приложения. К отдельным слоям кода MVVM относятся:
- Модель: этот уровень отвечает за абстракцию источников данных. Модель и ViewModel работают вместе, чтобы получить и сохранить данные.
- Представление: цель этого уровня - информировать ViewModel о действиях пользователя. Этот уровень соответствует ViewModel и не содержит никакой логики приложения.
- ViewModel: предоставляет те потоки данных, которые имеют отношение к View. Более того, он служит связующим звеном между моделью и представлением.
Разница между шаблоном проектирования MVC и MVVM
MVC (Контроллер представления модели) | MVVM (модель представления ViewModel) |
---|---|
Самая старая архитектура приложений для Android. | Признанный в отрасли образец архитектуры для приложений. |
Пользовательский ввод обрабатывается контроллером . | Представление принимает ввод от пользователя и действует как точка входа в приложение. |
Контроллер и представление существуют с отношением «один ко многим». Один контроллер может выбрать другой вид в зависимости от требуемой операции. | Множественное представление можно сопоставить с помощью одной модели представления, и, таким образом, между представлением и моделью представления существует отношение «один ко многим». |
Представление ничего не знает о Контроллере . | Представление имеет ссылку на ViewModel . |
Эта архитектура сильно зависит от API Android. | Имеет слабую или нулевую зависимость от Android API. |
Трудно вносить изменения и модифицировать функции приложения, поскольку слои кода тесно связаны. | Легко вносить изменения в приложение. Однако, если логика привязки данных слишком сложна, отладить приложение будет немного сложнее. |
Ограниченная поддержка модульного тестирования. | Тестируемость модулей самая высокая в этой архитектуре. |
Он не следует принципу модульности и единой ответственности. | Следует принципу модульности и единой ответственности. |