Sobes.tech
Назад к вопросам
Junior — Middle
74

Опишите, как реализовано внедрение зависимостей в вашей предыдущей рабочей среде.

Компании, где спрашивали
iviivi

Ответ от нейросети

sobes.tech AI

В моей предыдущей рабочей среде для внедрения зависимостей использовался паттерн Dependency Injection (DI), реализованный с помощью протоколов и фабрик.

Основные подходы:

  • Определение протоколов (интерфейсов) для сервисов.
  • Создание конкретных реализаций сервисов.
  • Использование фабричных методов или контейнера зависимостей для создания и передачи экземпляров в нужные классы.

Например, для сервиса сети был протокол NetworkServiceProtocol, а конкретная реализация NetworkService. В контроллеры или вью-модели зависимости передавались через инициализаторы:

protocol NetworkServiceProtocol {
    func fetchData()
}

class NetworkService: NetworkServiceProtocol {
    func fetchData() {
        // Реализация
    }
}

class ViewModel {
    private let networkService: NetworkServiceProtocol

    init(networkService: NetworkServiceProtocol) {
        self.networkService = networkService
    }
}

// В месте создания ViewModel
let networkService = NetworkService()
let viewModel = ViewModel(networkService: networkService)

Такой подход облегчал тестирование (можно подставлять мок-объекты) и улучшал модульность кода.