Sobes.tech
Junior — Middle

¿Puede explicar las diferencias entre el principio de inversión de dependencias y la inyección de dependencias?

sobes.tech AI

Respuesta de la IA

Inversión de dependencias (Principio de inversión de dependencias, DIP) — es uno de los principios SOLID, que establece que:

  • Los módulos de alto nivel no deben depender de los módulos de bajo nivel. Ambos deben depender de abstracciones.
  • Las abstracciones no deben depender de los detalles. Los detalles deben depender de las abstracciones.

Este es un principio de diseño que busca reducir la acoplamiento y aumentar la flexibilidad del código.

Inyección de dependencias (Dependency Injection, DI) — es un patrón o técnica que implementa el principio de inversión de dependencias en la práctica. DI significa que las dependencias (objetos que necesita la clase para funcionar) se pasan desde fuera, en lugar de crearse dentro de la clase.

Ejemplo:

protocol Service {
    func doSomething()
}

class RealService: Service {
    func doSomething() { print("Trabajo del servicio") }
}

class Client {
    let service: Service

    // Inyección de dependencia a través del constructor
    init(service: Service) {
        self.service = service
    }

    func execute() {
        service.doSomething()
    }
}

let service = RealService()
let client = Client(service: service)
client.execute()

Aquí, DIP es la idea de que Client depende de la abstracción Service, y no de la implementación concreta RealService. DI es la forma de pasar la implementación concreta a Client desde fuera.

En resumen:

  • DIP — es un principio de diseño.
  • DI — es una forma de implementar ese principio.