Sobes.tech
Junior — Middle

Kuidas te rakendasite Dependency Injection mehhanismi oma projektides?

sobes.tech AI

Vastus AI-lt

Minu iOS projektides rakendas Dependency Injection (DI), et parandada koodi modulaarust ja testitavust. Tavaliselt kasutasin konstruktoripõhist injektsiooni, kus sõltuvused edastatakse klassi initsialiseerija kaudu. Näiteks, kui mul on klass ViewModel, mis sõltub teenusest APIService, edastan selle teenuse initsialiseerija kaudu:

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

class ViewModel {
    private let apiService: APIService

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

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

// Kasutus
let service = APIService()
let viewModel = ViewModel(apiService: service)

Samuti kasutasin Property Injection, kus sõltuvused määratakse omaduste kaudu, ning mõnikord kasutasin Service Locatorit, et keskne juhtimine sõltuvuste osas, kuid püüdsin seda vältida testimise keerukuse tõttu. Suuremates projektides kasutasin DI konteinerid, näiteks Swinject, et automaatselt sõltuvusi lahendada.