Выбор ответа Middle Внедрение зависимостей обновлено
Время жизни зависимостей
Вопрос
Какое время жизни разумно для сетевого клиента, корзины пользователя и view model экрана?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Клиент на всё приложение, корзина на сессию пользователя, view model на экран. Скоупы отражают жизненный цикл данных.
Варианты ответа
- Всё синглтоном на приложение: так объекты не пересоздаются и экономят память
- Клиент на всё приложение, корзина на сессию пользователя, view model на экранправильный ответ
- Всё создавать заново при каждом обращении, чтобы не было общего состояния
- View model на всё приложение, корзина на экран, клиент на каждый запрос
Разбор
Скоупы отражают жизненный цикл данных. Сетевой клиент без пользовательского состояния живёт всё время. Корзина и прочие данные пользователя должны исчезнуть при выходе из аккаунта, поэтому их скоуп «сессия» пересоздаётся при логине. View model привязана к экрану. Синглтон для пользовательских данных это частая причина «утечки» данных предыдущего аккаунта после смены пользователя.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.