«Африкан Свиридович. Та не кажи, ці коти вже з@#али, я їх усіх віддав би на мило!
Баба Химка. Він, клятий, мишей зовсім не чіпа. Каже, шо з мишами треба
поводитись так, як хочеш, шоб миші поводились з тобою...
Саломон Самсонович. Ти диви, Толстого читав!
Свирид Опанасович. Топити треба.
Голос з сіней. Не треба.
Входять мишки — Вєра і Надєжда. При першому ж погляді на их становиться ясно,
чому Мурзік увльокся Толстим.»
Лесь Подерв’янський.Казка про рєпку
Що таке MVI паттерн?
Як написав автор, MVI це спроба переосмислення і повернення до витоків, до істинного MVC. cycle.js.org/...-what-mvc-is-really-about
MVI — представлений в 2015 році. Додано та змінено в порівнянні з MVVM:
Intent — функція, яка приймає вхідні дані від користувача (наприклад, події призначеного для користувача інтерфейсу, такі як події click) і переводить в те, що буде передано як параметр функції model (). Це може бути проста рядок для установки значення моделі або більш складна структура даних, наприклад, об’єкт.
Model — Функція, яка використовує вихідні дані з функції intent () в якості вхідних даних для роботи з моделлю. Результат роботи цієї функції — нова модель (зі зміненим станом). При цьому потрібно, щоб дані були незмінними. По суті, Модель здійснює виклик бізнес-логіки додатка (будь-то Interactor, UseCase, Repository) і в результаті повертає новий об’єкт моделі.
View — Функція, яка отримує на вході модель і просто відображає її. Зазвичай ця функція виглядає як view.render (model).
Детальніше про групу архітектур об’єднану ідеєю «односпрямованого потоку даних» см. Тут докладно і з картинками, див. Тут
Основна проблема, яку це диво вирішує— що в MVP і MVVM станом управляє Presenter або ViewModel. До чого це призводить:
1. У бізнес-логіки є власний стан, так само, як у Presenter або ViewModel. Ви намагаєтеся синхронізувати стан бізнес-логіки й Presenter, щоб вони були однаковими. Встановлюєте видимість якогось віджета прямо з View, або Android сам відновлює стан з bundle під час перевтілення.
2. Presenter і ViewModel мають довільну кількість вхідних точок. View запускає подію, яка обробляє Presenter. Але і Presenter має багато каналів виведення — як view.showLoading () або view.showError () в MVP. А ViewModel пропонує множинні Observables. Це призводить до конфліктуючих станів View, Presenter і бізнес-логіки, особливо при роботі з декількома потоками.
Говорячи по іншому у нас одночасно може з’явитися відображення помилки та лоадер з процентом )
Звичайно, то що вийшло після доповнення «канонічного» MVVM більш нагадує інше трибуквенне слово MVI (Model-View-Intent). Загалом то схоже, різниця в загальному то термінологічна, ідеологічно це те ж потрапляє в тренд «односпрямованого потоку даних». Детальніше ми це розглянемо у другій частині, коли будемо розглядати реалізацію ViewModel.
Глобальные события — события системы. Например изменение состояния интернета. Ну а равноправность стейтов —это ближе к конкретным бизнес правилам. В общем случае это предсталяется в виде нескольких FSM, упростить к конкретным правилам всегда можно.
Это комбинации значений полей вьюмодела, которые прибиты к XML форме вьюхи.
А тогда набор настроек данных полей
которые прибиты к XML форме вьюхи.
можно ли назвать состоянием вью?
. Databinding.
Он уже включает в себя всю логику контракта путём привязывания значений состояния вьюмодела к атрибутам вьюхи.
Тут можно ли пояснить, что имеется ввиду под «состояния вьюмодела». Так как, по моему, логика поведения != логика отображения. У вьюмодел этих самых состояний может быть гораздо больше чем у вью. Например добавочная логика состояний и переходов вьюмодел (fsm) по реакции на действия пользователя, ну и на состояние даных своя логика, и на глобальные события еще одна.
Про цей MVI — те що в статті описане, як раз і реалізує його плюси, та оминає мінуси, якщо ми базуємось на визначеннях, аналогічних з blog.mindorks.com/...inners-step-by-step-guide або proandroiddev.com/...and-channels-d36820b2028d В статтю звичайно, додам, спасибі за зауваження, просто планувалось у спін-оффі разом з розповіддю про додаткові FSM на користувацькі дії та внутрішні стани.
Про BLoC добра вказівка, „If you know about the MVVM (Model-View-ViewModel) pattern, the BLoC is the replacement for ViewModel. The BLoC is responsible for managing the state for View, and the Model (or Repository) helps the BLoC to access data no matter local or remote. In Flutter, there is no data binding” це звідси medium.com/... there is no data binding.
Про BLoC та MVI також гарне зауваження, що треба розглянути оці базворди в одній системі вимірів.
Хм. Спасибі за нагадування за забутий домен. На ньому й розкладу приклади для статті по флаттеру.
О, хоть хтось по суті статті. А про що саме сучасніше хтілось би вельмишановному?
Ото як на таке питання відповісти? ностальгія, та як сувенір на згадку. Може, щось знову почну, хай живе. До речі глянув і аж здивувався, за 9 років не дефейснули, правда логіка накрилась, бо тоді я всю авторизацію зробив на соцсітках а з мейл та одноглазниками і яндексом якось зараз не дуже. Та й інтеграція з ними там тісна була, якраз у теперішніх трендах.
То вже років з 9 як зомбі продж. А таки да, за «вони» спасибі, там я більшість часу як «челавек-аркестр» виступав на орені. А сам мезон закрив, як отримав повістку на мобілізацію ) Так що пекедж нейми то ностальгія. от згадалось жеж
Такого плану пекдж нейми в мене йдуть на гарнір до дописоприступів )
Ото по моєму, буде єдине, на що АІ будуть підтримувати популяцію шкіряних мішків.
А только они и могут задержатся как прайвит в репе у разраба. Остальное — в репах фирмы
Ну неудержусь от моей историй об этом — У меня есть манька каждый год задротить чтот новое тип языка или подхода. Посмотрел я года два назад на дарт с флаттером. И думал что ж запилить для интересу. И постучался ко мне рекрутер с предложением гор золотых и берегов покрытых стейками. Скинул мне ТЗ на тестовое, и на вопрос, на чем писать то можно, ответил пиши на чем хош, и за время оплатят. О, класс и думать не надо на чем запилил на флаттершай. Скинул сладкоголосым гит репу — а рекрутер ответил, что на том конце особо и проверять некому. И слился. Так у меня начальный стаж работы с флаттер оказался некоммерческим, и я получил что хотел на шару ) Рекрутер представлял какой то банк
Мда.
Если человек не хочет тратить свое время, какой смысл компании тратить время на человека, который через пол года перейдет на +500 через дорогу?
Хм, а про бас фактор не?
Сравните с компаниями на западе, где бывает что люди тратят по пол года на leetcode для того чтобы пройти собеседование.
Вот чего взяли у гугла -это собесы. До зп и соц пакета как то еще ход дошел
Месье знает толк в извращениях. Линкед то чего не угодил то? Он по идее только в России и в Северной Корее и в Китае под запретом. Но то не моя ЦА
Ну приватные со временем прорастают в публичные. Там другая проблема если для себя/проверка концепции то там многое ~~без бутылки~~ пояснений не разобрать и выглядит оно как ДичЪ
Было такое. В КПИ тогда на маках для какой то канадской конторы рисовали вышиванки. Я тогда помогал девушке рисовать )
Стесняюсь поинтересоваться за творческие планs. Стихов хочу.
Ну тут не все не так однозначно. Девочек подростков, зарабатывающих на тик-токе не так уже и много по сравнению с количеством врачей или инженеров. И кстати, количество количество зарабатывающих/пытающихся сильно меньше 0,0001. И это я еще не вспомнил про врачей или инженегров ведущих блоги и рассказывающих за эмоции.
Ну как раз это и проблема. Реактивность и много функций вызываемых асинхронно приводят иногда к интересным состояниям Вью