Junior — Middle
Pourriez-vous donner un exemple d'utilisation du principe d'inversion des dépendances dans un développement réel?
sobes.tech IA
Réponse de l'IA
Le principe d'inversion des dépendances (Dependency Inversion Principle, DIP) stipule que les modules de haut niveau ne doivent pas dépendre directement des modules de bas niveau, mais que tous deux doivent dépendre d'abstractions.
Exemple en Java :
// Abstraction
public interface MessageService {
void sendMessage(String message);
}
// Implémentation concrète
public class EmailService implements MessageService {
public void sendMessage(String message) {
System.out.println("Envoi d'email : " + message);
}
}
// Classe dépendant de l'abstraction, pas de l'implémentation concrète
public class Notification {
private MessageService service;
public Notification(MessageService service) {
this.service = service;
}
public void notifyUser(String message) {
service.sendMessage(message);
}
}
// Utilisation
public class Main {
public static void main(String[] args) {
MessageService emailService = new EmailService();
Notification notification = new Notification(emailService);
notification.notifyUser("Bonjour !");
}
}
Ici, la classe Notification dépend de l'interface MessageService, et non de l'implémentation concrète EmailService. Cela permet de changer facilement l'implémentation (par exemple, pour un service SMS) sans modifier le code de Notification. Cette approche améliore la testabilité et l'extensibilité du code.