Sobes.tech
Junior — Middle

¿Puedes dar un ejemplo de implementación del principio de inversión de dependencias en un proyecto?

sobes.tech AI

Respuesta de la IA

El principio de inversión de dependencias (Dependency Inversion Principle, DIP) establece que los módulos de nivel superior no deben depender directamente de los módulos de nivel inferior, sino que ambos deben depender de abstracciones (por ejemplo, protocolos o interfaces).

Ejemplo en Swift para iOS:

// Abstracción
protocol DataService {
    func fetchData() -> String
}

// Implementación concreta
class NetworkDataService: DataService {
    func fetchData() -> String {
        return "Datos de la red"
    }
}

// Clase que depende de la abstracción, no de la implementación concreta
class ViewModel {
    private let dataService: DataService

    init(dataService: DataService) {
        self.dataService = dataService
    }

    func getData() -> String {
        return dataService.fetchData()
    }
}

// Uso
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Imprime: Datos de la red

Aquí, ViewModel depende del protocolo DataService, no de la clase concreta NetworkDataService. Esto permite cambiar fácilmente la implementación del servicio, por ejemplo, para pruebas o para otra fuente de datos, sin modificar el código de ViewModel.