¿Cuál es la diferencia clave entre Inversión de Dependencias y Inyección de Dependencias?
sobes.tech AI
Respuesta de la IA
La Inversión de Dependencias (principio de inversión de dependencias) 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.
La Inyección de Dependencias es un patrón o técnica concreta que implementa el principio de Inversión de Dependencias. Es una forma de pasar dependencias (objetos) a una clase o función desde fuera, en lugar de crearlas internamente.
En otras palabras:
- La Inversión de Dependencias es un concepto o principio de diseño.
- La Inyección de Dependencias es una forma de implementar este concepto, cuando las dependencias se pasan desde fuera.
Ejemplo en Go:
// Abstracción
type Notifier interface {
Notify(message string)
}
// Implementación concreta
type EmailNotifier struct {}
func (e EmailNotifier) Notify(message string) {
fmt.Println("Enviando email con mensaje:", message)
}
// Módulo de alto nivel
type UserService struct {
notifier Notifier // depende de la abstracción
}
// Inyección de dependencias a través del constructor
func NewUserService(n Notifier) *UserService {
return &UserService{notifier: n}
}
func (s *UserService) RegisterUser(name string) {
// lógica de registro
s.notifier.Notify("Usuario registrado: " + name)
}
Aquí, el principio de Inversión de Dependencias se cumple mediante la dependencia de la interfaz Notifier, y la Inyección de Dependencias se realiza pasando una implementación concreta de EmailNotifier en el constructor de UserService.