Size: a a a

Android Architecture

2021 May 21

(

( in Android Architecture
А в MVI события не дискретные?
источник

P

Pavel in Android Architecture
MVI не только про объект, но и про подписку.
Теоретически, в MVP можно один объект скинуть на VIew. Получается, View будет иметь один метод (помимо attach/detach) - что-то типа renderState(state: State). Я не пробовал так. Не могу сказать насколько это плохо или хорошо.
Выглядит так, что View станет сильно умной, т.к. ей придётся разбираться как отрендерить state. К тому же будет не просто менять части state в презентере. Для чего в MVI есть специальная сущность - редьюсер.
источник

R

Roman K. in Android Architecture
а как же этот пример от сюда? https://hannesdorfmann.com/android/mosby3-mvi-2/

Как мне показалось - MVI это не альтернатива MVP/MVVM, а особенность их реализации / параллельный подход.

Точно так же можно с MVP/MVVM использовать clean или не использовать
источник

M

Maksim Gridin in Android Architecture
не дискретные в том смысле что они отправляются по единому потоку, внутри потока конечно и события и стейты дискретные
источник

M

Maksim Gridin in Android Architecture
я бы вообще выделил такую цепочку эволюции архитектур:
MVC + ViewInterface = MVP
MVP + Bindings = MVVM
MVVM + UDF = MVI
источник

P

Pavel in Android Architecture
@ArkaNN1985 Аркадий, можете пояснить по этому вопросу? hannesdorfmann действительно из "презентера" дёргает View.
В MVIKotlin, я вижу, что IntenExecutor (типа "презентер") не знает про View, а View привязывается к Store через специальную сущность - Controller, который, по сути, является частью View.
Как в итоге правильно с точки зрения концепции MVI? Должна ли сущность, аналогичная презентеру знать про View? И почему в итоге в MVIKotlin пришли к тому, что эта сущность про View не знает?
источник

IN

Ilya Nikolaev in Android Architecture
У хенеса свое видение mvi через призму mvp. Подход с того времени эволюционировал.
источник

IN

Ilya Nikolaev in Android Architecture
Я бы не брал сейчас его статьи за основу
источник

JF

Jorik Fat in Android Architecture
Потому что в mvvm - View может выдернуть состояние из VM, а в MVI нет
источник

АЕ

Алексей Ершов... in Android Architecture
можно и одно и второе реализовать так, что сможет и что не сможет
источник

JF

Jorik Fat in Android Architecture
но это же будет нарушением
источник

АЕ

Алексей Ершов... in Android Architecture
почему?
источник

JF

Jorik Fat in Android Architecture
потому что udf это return и throw
а как без return выдернуть состояние?
источник

АЕ

Алексей Ершов... in Android Architecture
MVVM это “вью обзервит состояние M и передаёт M сообщения”. Ограничений на то, как сделано состояние, как сделан observe и как передаются сообщения и как состояние модифицируется - нет.
MVI это тоже “вью обзервит состояние M и передаёт M сообщения”, но с дополнительными ограничениями. Состояние - единое и иммутабельное, обновляется атомарно. Сообщения - обычно отдельные объекты. Для обновления состояния используется какой-нибудь редюсер.
Мне кажется не особо важно здесь давать точные определения и ограничивать, сколько должно быть составных частей у вашего MVI и как они будут называться. Главное - сообщения на вход и состояние на выход.
источник

JF

Jorik Fat in Android Architecture
я тоже так думал. Но нарисовав uml я понял, чем они отличаются
источник

AI

Arkadii Ivanov in Android Architecture
Там приведённый фрагмент когда взят из "промежуточного" места, где Hannes Dorfmann показывает отличие отрисовки в MVP (по полям) от отрисовки в MVI (единым консистентным состоянием). Это не пример MVI. Сам пример ниже. Там фрагмент - это View, interactor - это типа Store, а presenter - это контроллер (binder).
источник

R

Roman K. in Android Architecture
пожалуй это самое понятное объяснение, что встречал. Спасибо =)
источник

M

Maksim Gridin in Android Architecture
Надо добавить:
MVI + FP = MVU ))
источник

MH

Maksus Heinz in Android Architecture
Всем привет, а есть ли у кого пример экрана регистрации в MVI стиле? С глобальным стейтом экрана более-менее понятно, но вот как контролировать поведение полей ввода, получается у них свой стейт, если кнопка регистрации нажата и поле пустое, то нужно ему стейт ошибки врубить или ещё какие косяки в валидации, чет я вообще представление не имею как это всё организовать(((
источник

JF

Jorik Fat in Android Architecture
Текстовые поля - это поля события
источник