Sobes.tech
Junior — Middle

¿Podría dar un ejemplo de la aplicación del principio de inversión de dependencias en un desarrollo real?

sobes.tech AI

Respuesta de la IA

El principio de inversión de dependencias (Dependency Inversion Principle, DIP) establece que los módulos de alto nivel no deben depender directamente de los módulos de bajo nivel, sino que ambos deben depender de abstracciones.

Ejemplo en Java:

// Abstracción
public interface MessageService {
    void sendMessage(String message);
}

// Implementación concreta
public class EmailService implements MessageService {
    public void sendMessage(String message) {
        System.out.println("Enviando email: " + message);
    }
}

// Clase que depende de la abstracción, no de la implementación concreta
public class Notification {
    private MessageService service;

    public Notification(MessageService service) {
        this.service = service;
    }

    public void notifyUser(String message) {
        service.sendMessage(message);
    }
}

// Uso
public class Main {
    public static void main(String[] args) {
        MessageService emailService = new EmailService();
        Notification notification = new Notification(emailService);
        notification.notifyUser("¡Hola!");
    }
}

Aquí, la clase Notification depende de la interfaz MessageService, no de la implementación concreta EmailService. Esto permite cambiar fácilmente la implementación (por ejemplo, a un servicio SMS) sin modificar el código de Notification. Este enfoque mejora la testabilidad y la extensibilidad del código.