Sobes.tech
Junior — Middle

Ako ste implementovali mechanizmus Dependency Injection vo vašich projektoch?

sobes.tech AI

Odpoveď od AI

Vo svojich iOS projektoch som implementoval Dependency Injection (DI) na zvýšenie modularity a testovateľnosti kódu. Zvyčajne som používal injekciu cez konštruktor, keď sa závislosti odovzdávajú cez inicializátor triedy. Napríklad, ak mám triedu ViewModel, ktorá závisí od služby APIService, túto službu odovzdávam cez inicializátor:

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

class ViewModel {
    private let apiService: APIService

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

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

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

Tiež som používal Property Injection, keď sa závislosti nastavujú cez vlastnosti, a občas som využíval Service Locator na centralizované riadenie závislostí, ale snažil som sa tomu vyhýbať kvôli zložitosti testovania. Vo veľkých projektoch som používal DI kontajnery ako Swinject na automatické riešenie závislostí.