Пишу простым языком об iOS разработке на Swift и мобильной разработке в целом.
Обо мне: https://t.me/hardworkerIT/3
Чат: @hardworkerChatIT
Канал про разработку и жизнь в ИТ: @itDenisov
Вакансии по мобильной разработке: @mobileDevJobs
Post #129
899
🔢 Dependency Injection: как правильно внедрять зависимости в SwiftUI.
Сегодня поговорим о Dependency Injection (DI) — мощный подход, который делает ваш код чище, тестируемым и гибким.
⚠️ Что такое Dependency Injection?
Это способ передачи зависимостей извне, вместо создания их внутри класса.
Без использования DI:
С использованием DI:
🤔 Зачем это нужно?
🔸 Тестируемость: можно подменять зависимости на моки.
🔸 Гибкость: легко менять реализации (например, для разных сборок).
🔸 Чистая архитектура: сущности не знают, как создаются их зависимости.
🔸 Масштабирование: удобное расширение функционала благодаря добавлению зависимостей.
✅ Три способа внедрения зависимостей в SwiftUI:
1️⃣ Через инициализатор (Constructor Injection).
2️⃣ Через свойства (Property Injection).
3️⃣ Через .environmentObject (Environment).
💡 Вывод:
Dependency Injection — это не просто модный паттерн, а реальный способ сделать ваш код чище и гибче. Начните с малого — вынесите хотя бы одну зависимость наружу, и вы сразу заметите, насколько проще стало тестировать и менять логику.
➡️ Подписаться на канал
Мобильный трудоголик
Сегодня поговорим о Dependency Injection (DI) — мощный подход, который делает ваш код чище, тестируемым и гибким.
⚠️ Что такое Dependency Injection?
Это способ передачи зависимостей извне, вместо создания их внутри класса.
Без использования DI:
class MyViewModel {
private let service = MyService() // Зависимость создаётся внутри
}
С использованием DI:
class MyViewModel {
private let service: MyService
init(service: MyService) { // Зависимость передаётся извне
self.service = service
}
}
🤔 Зачем это нужно?
🔸 Тестируемость: можно подменять зависимости на моки.
🔸 Гибкость: легко менять реализации (например, для разных сборок).
🔸 Чистая архитектура: сущности не знают, как создаются их зависимости.
🔸 Масштабирование: удобное расширение функционала благодаря добавлению зависимостей.
✅ Три способа внедрения зависимостей в SwiftUI:
1️⃣ Через инициализатор (Constructor Injection).
struct MyContentView: View {
let service: MyNetworkService
var body: some View {
Text(service.fetchText())
}
}
MyContentView(
service: MyNetworkService()
)
2️⃣ Через свойства (Property Injection).
class MyViewModel: ObservableObject {
var analytics: MyAnalyticsService? // Можно задать позже
}
let myViewModel = MyViewModel()
myViewModel.analytics = MyAnalyticsService()
3️⃣ Через .environmentObject (Environment).
@main
struct MyApp: App {
let service = MyNetworkService()
var body: some Scene {
WindowGroup {
MyContentView()
.environmentObject(service)
}
}
}
struct MyContentView: View {
@EnvironmentObject var service: MyNetworkService
var body: some View {
Text(service.fetchText())
}
}
💡 Вывод:
Dependency Injection — это не просто модный паттерн, а реальный способ сделать ваш код чище и гибче. Начните с малого — вынесите хотя бы одну зависимость наружу, и вы сразу заметите, насколько проще стало тестировать и менять логику.
➡️ Подписаться на канал
Мобильный трудоголик
- ❤ 22
- 👍 11
- 🔥 3


