Комментарии 2
Очень крутая статья, спасибо! Такой вопрос: реализована ли у вас работа с жизненным циклом зависимостей? Что если нужно, чтобы зависимость была синглтоном или же, например, создавался новый экземпляр каждый раз, когда ссылка на предыдущий созданный экземпляр была потеряна? (аналог скоупов в Swinject)
Привет! В нашем проекте не понадобился весь набор скоупов и по сути все зависимости живут по одному из двух сценариев. Если зависимость нужна только в определенном модуле, то время жизни зависимости будет равно времени жизни модуля. Для зависимостей, которые переиспользуются между модулями, время жизни будет равно времени жизни приложения. Все подобные зависимости хранятся в контейнере сервисов. Фабрика сервисов хранит контейнер и в нем зашита логика, инициализирующая зависимость нужного типа при первом вызове создающего метода. В целом это сервис локатор, но припрятанный внутрь фабрики для исключения проблем, описанных в статье. Спасибо за классный вопрос!
Прививка от созависимости. Зачем нужен DI и как он работает в iOS-приложениях hh.ru