Back to questions
Junior — Middle
74
Как бы вы реализовали собственный механизм Dependency Injection для управления зависимостями в приложении?
Answer from AI
sobes.tech AI
Для реализации собственного механизма Dependency Injection (DI) в iOS-приложении можно создать простой контейнер, который будет хранить зависимости и предоставлять их по запросу.
Пример на Swift:
// Протокол для сервиса
protocol ApiService {
func fetchData()
}
// Конкретная реализация
class ApiServiceImpl: ApiService {
func fetchData() {
print("Данные загружены")
}
}
// DI контейнер
class DIContainer {
static let shared = DIContainer()
private var services = [String: Any]()
func register<T>(_ service: T) {
let key = String(describing: T.self)
services[key] = service
}
func resolve<T>() -> T? {
let key = String(describing: T.self)
return services[key] as? T
}
}
// Использование
let container = DIContainer.shared
container.register(ApiServiceImpl() as ApiService)
if let apiService: ApiService = container.resolve() {
apiService.fetchData()
}
Такой подход позволяет централизованно управлять зависимостями, облегчает тестирование и повышает модульность кода.