Sobes.tech
Junior — Middle

Jak jste implementovali mechanismus Dependency Injection ve svých projektech?

sobes.tech AI

Odpověď od AI

Ve svých iOS projektech jsem implementoval Dependency Injection (DI) pro zvýšení modularity a testovatelnosti kódu. Obvykle jsem používal konstruktorovou injekci, kdy jsou závislosti předávány přes inicializátor třídy. Například pokud mám třídu ViewModel, která závisí na službě APIService, předávám tuto službu přes inicializátor:

class APIService {
    func fetchData() { /* ... */ }
}

class ViewModel {
    private let apiService: APIService

    init(apiService: APIService) {
        self.apiService = apiService
    }

    func loadData() {
        apiService.fetchData()
    }
}

// Použití
let service = APIService()
let viewModel = ViewModel(apiService: service)

Také jsem používal Property Injection, kdy jsou závislosti nastavovány přes vlastnosti, a občas jsem využíval Service Locator pro centrální správu závislostí, ale snažil jsem se tomu vyhýbat kvůli složitosti testování. Ve větších projektech jsem používal DI kontejnery, například Swinject, pro automatické řešení závislostí.