¿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:
- Los módulos de nivel superior no deben depender de los módulos de nivel inferior. Ambos deben depender de abstracciones.
- 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.