Sobes.tech
Junior — Middle

Hogyan vezetted be a Dependency Injection mechanizmust a projektjeiben?

sobes.tech MI

Válasz az MI-től

iOS projektjeimben a kód modularitásának és tesztelhetőségének növelése érdekében Dependency Injection (DI) megvalósítást alkalmaztam. Általában a konstruktoros injektálást használtam, amikor a függőségek az osztály inicializátorán keresztül kerülnek átadásra. Például, ha van egy ViewModel osztályom, amely egy APIService szolgáltatásra támaszkodik, ezt a szolgáltatást az inicializátorán keresztül adom át:

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

class ViewModel {
    private let apiService: APIService

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

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

// Használat
let service = APIService()
let viewModel = ViewModel(apiService: service)

Emellett alkalmaztam Property Injection-t, amikor a függőségek tulajdonságokon keresztül kerülnek beállításra, és néha Service Locator-t használtam a függőségek központi kezelésére, de próbáltam ezt elkerülni a tesztelés nehézségei miatt. Nagyobb projektekben DI-konténereket, például Swinject-et használtam a függőségek automatikus feloldására.