Sobes.tech
Junior — Middle

Kaip įgyvendinote Dependency Injection mechanizmą savo projektuose?

sobes.tech AI

Atsakymas iš AI

Savo iOS projektuose aš įgyvendinau Dependency Injection (DI), siekdamas pagerinti kodo modulį ir testuojamumą. Paprastai naudoju konstruktorinę injekciją, kai priklausomybės perduodamos per klasės inicializatorių. Pavyzdžiui, jei turiu ViewModel klasę, kuri priklauso nuo APIService paslaugos, aš perduodu šią paslaugą per inicializatorių:

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

class ViewModel {
    private let apiService: APIService

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

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

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

Taip pat naudoju Property Injection, kai priklausomybės nustatomos per savybes, ir kartais naudoju Service Locator, kad centralizuotai valdyti priklausomybes, bet stengiuosi to vengti dėl sudėtingumo testavime. Dideliuose projektuose naudoju DI konteinerius, pvz., Swinject, kad automatiškai išspręstų priklausomybes.