group-telegram.com/iosmakesmehate/2983
Create:
Last Update:
Last Update:
SwiftUI по умолчанию делает многое автоматически — это удобно, но без DI ты быстро начнёшь жёстко связывать View, ViewModel, сервисы, хранилище, API и т.д.
А значит тестировать, переиспользовать, изменять, рефакторить код — страшно и больно
С DI легко заменяешь зависимости на моки:
let mock = MockUserService()
let vm = ProfileViewModel(userService: mock)
Чистое разделение ответственности c помощью DI помогает разделить на компоненты:
View — Отображение
ViewModel — Логика UI
Service — Данные/API
Гибкость для разных окружений:
#if DEBUG
let service = MockUserService()
#else
let service = RealUserService()
#endif
Лёгкий переход к модульной архитектуре
С DI ты можешь:
- выносить модули в отдельные фреймворки,
- управлять зависимостями централизованно,
- добавлять фичи, не ломая всё остальное.
В следущем посте разберем в чем главное отличие работы с DI в SwiftUI и UIKit