Sobes.tech
Intern

¿Cuál es la diferencia entre Dependency Injection y Dependency Inversion?

sobes.tech AI

Respuesta de la IA

La Inyección de Dependencias (Dependency Injection, DI) y la Inversión de Dependencias (Dependency Inversion, DIP) son conceptos relacionados pero diferentes en el campo del diseño de software.

  • Principio de Inversión de Dependencias (DIP) — uno de los cinco principios SOLID. Dice que:

    1. Los módulos de nivel superior no deben depender de los módulos de nivel inferior. Ambos deben depender de abstracciones.
    2. Las abstracciones no deben depender de los detalles. Los detalles deben depender de las abstracciones.

    Este principio busca reducir el acoplamiento y aumentar la flexibilidad de la arquitectura.

  • Inyección de Dependencias (DI) — es un patrón (método) para implementar la inversión de dependencias. DI significa que las dependencias de un objeto se le pasan desde fuera (por ejemplo, a través del constructor, un setter o una interfaz), en lugar de crearse dentro del objeto.

Ejemplo de DI en C++:

class ILogger {
public:
    virtual void Log(const std::string& message) = 0;
};

class ConsoleLogger : public ILogger {
public:
    void Log(const std::string& message) override {
        std::cout << message << std::endl;
    }
};

class Application {
    ILogger& logger;
public:
    Application(ILogger& logger) : logger(logger) {}
    void Run() {
        logger.Log("Aplicación iniciada");
    }
};

int main() {
    ConsoleLogger logger;
    Application app(logger); // inyección de dependencia
    app.Run();
}

En resumen: DIP es un principio de diseño, y DI es una forma de implementarlo.