Sobes.tech
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()
}

Такой подход позволяет централизованно управлять зависимостями, облегчает тестирование и повышает модульность кода.