Было удивительно видеть, что ни один из постов здесь не ответил на вопрос. Они либо слишком общие, расплывчатые, неправильные или не относятся к реализации в Android.
В MVC слой View знает только, как отобразить пользовательский интерфейс (UI). Если для этого нужны какие-либо данные, они получают их из слоя Model . Но View НЕ напрямую просит модель найти данные, он делает это через Controller . Таким образом, Controller вызывает Model для предоставления необходимых данных для View . Когда данные готовы, контроллер 1016 * информирует View , что данные готовы для получения с Model . Теперь View может получать данные от Model .
.
Этот поток можно обобщить следующим образом:
Стоит отметить, что View может знать о доступности данных в Model через Контроллер - также известный как Пассивный MVC - или путем наблюдения данных в Model путем регистрации наблюдаемых для него значений, которые Active MVC .
Что касается реализации, первое, что приходит на ум, это то, какой компонент Android следует использовать для View ? Activity
или Fragment
?
Ответ в том, что это не имеет значения, и оба могут быть использованы. View должен иметь возможность представлять пользовательский интерфейс (UI) на устройстве и реагировать на взаимодействие пользователя с UI. И Activity
, и Fragment
предоставляют необходимые методы для этого.
В примере приложения, используемого в этой статье Я использовал Activity
для слоя View , но также можно использовать Fragment
.
Полный пример приложения можно найти в ветке 'mvc' моего репозитория GitHub здесь .
Я также имел дело с плюсами и минусами архитектуры MVC в Android на примере здесь .
Для тех, кто заинтересован, я начал серию статей по архитектуре приложений для Android здесь , в которых я сравниваю различные архитектуры, например, MVC, MVP, MVVM, для разработки приложений для Android через готовое приложение.