Доминирование UI first
От: Ilya81  
Дата: 20.03.20 15:14
Оценка:
Такое прозвище по аналогии со схемами в EntityFramework придумавается схемам а-ля VIPER, и Cicerone под Android явно ориентировано на аналогичный метод. Я не понимаю сторонников этих идей, они что ли мазохисты в некотором смысле, или стрессоустойчивость тренируют таким способом?

Казалось б с опытом становится всё более очевидным постулат, что UI очень непредсказуем. Мало ли какие переключения, overlay, swipe-to-dismiss, всякие уведомления, не говоря уж о банальном переключении на входящий звонок, и прочие мыслимые и немыслимые действия могут происходить в UI. В общем случае ситуация — не угадать всех способов, когда может отобразиться этот view, и всех дальнейших действий тоже.

Тем не менее упорное стремление придумать эффективный способ передачи актуальных данных между отображаемыми view. Казалось б, достаточно создать слой данных, которой будет существовать независимо от UI, а конкретному view может понадобится лишь указатель на конкретный объект данных, который знает, кто он такой и как связан с другими данными, и задача view — всего лишь отобразить данные и информировать этот объект о действиях пользователя. Обновление — вообще не проблема, есть RxSwift и RxJava. И не надо никаких подписок на холодные сигналы в presenter'ах — подписки нужны только на subject'ы, а слой данных сам разберётся, когда те прилетят от сервера или от чёрта в ступе. И главное — было б не важно, какой view, уведомление или леший оказались инициатором действия — через subject'ы данные обновятся во всех активных view, и отобразившиеся в любой момент view тоже получит актуальные данные. Но нет, мало кто хочет лёгких путей, нужно данные в router'ах пускать по таким лабиринтам, что чёрт не только ногу сломит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.