Выбор ответа Middle Внедрение зависимостей обновлено

Время жизни зависимостей

Вопрос

Какое время жизни разумно для сетевого клиента, корзины пользователя и view model экрана?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Клиент на всё приложение, корзина на сессию пользователя, view model на экран. Скоупы отражают жизненный цикл данных.

Варианты ответа

  1. Всё синглтоном на приложение: так объекты не пересоздаются и экономят память
  2. Клиент на всё приложение, корзина на сессию пользователя, view model на экранправильный ответ
  3. Всё создавать заново при каждом обращении, чтобы не было общего состояния
  4. View model на всё приложение, корзина на экран, клиент на каждый запрос

Разбор

Скоупы отражают жизненный цикл данных. Сетевой клиент без пользовательского состояния живёт всё время. Корзина и прочие данные пользователя должны исчезнуть при выходе из аккаунта, поэтому их скоуп «сессия» пересоздаётся при логине. View model привязана к экрану. Синглтон для пользовательских данных это частая причина «утечки» данных предыдущего аккаунта после смены пользователя.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.