Comments 8
Наверное, на данный момент самая практичная реализация подхода с однонаправленным потоком данных. Реакт для ведроида!
Не совсем понятно, в какую сторону пойдет Ваш шаблон дальше, если это будет близко к command-ориентированному подходу, то он плохо приспособлен к жизни в больших проектах. Самым явным недостатком, пожалуй, является факт неявности источника данных и рецепиентов сообщений (а упоминание Intent в аббревиатуре намекает на то, что проект будет построен на основе как-раз таки Intent-общения). Единственным плюсом будет простота вынесения логики в сервисы, что позволит спокойно существовать процессам приложения после смерти Application процесса.
Жду продолжения, так как Вы меня заинтересовали :)
Жду продолжения, так как Вы меня заинтересовали :)
Как будет работать данный подход в случае наличия на экране текстовых полей? Текстовое поле по определению изменяется юзером напрямую, соответственно в этом случае данные текут уже в другом напревлении.
На мой взгляд, однонаправленный поток данных сохранится, т.к. модель так же будет принимать интент, которым в случае с текстовым полем может быть callback изменения текста или просто его текстовое значение.
Я имел в виду следующее.
Нормальный поток данных: юзер нажал на кнопку. View через ViewModel сообщила наверх о событии. Произошли необходимые действия. Сверху поменяли ViewModel и она сообщила об изменении View.
Под сообщениями можно понимать прямые сообщения, байндинг или подписки на изменения.
Случай текстового поля: юзер что-то вводит в текстовое поле, текстовое поле _уже_ изменилось и после этого View оповещает ViewModel об изменениях. Таким образом не кто-то сверху ( Презентер) запрашивает изменения ViewModel, а View запрашивает их, т.к. по факту эти изменения уже произошли.
Для меня это выглядит как строго обратный поток данных. Поправьте меня, если я не прав.
Нормальный поток данных: юзер нажал на кнопку. View через ViewModel сообщила наверх о событии. Произошли необходимые действия. Сверху поменяли ViewModel и она сообщила об изменении View.
Под сообщениями можно понимать прямые сообщения, байндинг или подписки на изменения.
Случай текстового поля: юзер что-то вводит в текстовое поле, текстовое поле _уже_ изменилось и после этого View оповещает ViewModel об изменениях. Таким образом не кто-то сверху ( Презентер) запрашивает изменения ViewModel, а View запрашивает их, т.к. по факту эти изменения уже произошли.
Для меня это выглядит как строго обратный поток данных. Поправьте меня, если я не прав.
Можно Ханса напрямую спросить, он на реддите тусит. Отвечает с удовольствием. ;)
ЗЫ Обычно в подобных архитектурах текстовые поля игнорируются пока не будет нажата кнопка «отправить».
ЗЫ Обычно в подобных архитектурах текстовые поля игнорируются пока не будет нажата кнопка «отправить».
Sign up to leave a comment.
Реактивные приложения с Model-View-Intent. Часть 1: Модель