Sobes.tech
Junior — Middle

¿Cómo implementaste el mecanismo de Inyección de Dependencias en tus proyectos?

sobes.tech AI

Respuesta de la IA

En mis proyectos de iOS, implementé la Inyección de Dependencias (DI) para mejorar la modularidad y la testabilidad del código. Normalmente usaba la inyección por constructor, donde las dependencias se pasan a través del inicializador de la clase. Por ejemplo, si tengo una clase ViewModel que depende de un servicio APIService, paso este servicio a través del inicializador:

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

class ViewModel {
    private let apiService: APIService

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

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

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

También utilicé la inyección por propiedad, donde las dependencias se establecen a través de propiedades, y en ocasiones empleé un Localizador de Servicios para gestionar las dependencias de manera centralizada, aunque traté de evitarlo debido a la complejidad en las pruebas. En proyectos grandes, usé contenedores DI, como Swinject, para resolver automáticamente las dependencias.