Junior — Middle
Könnten Sie ein Beispiel für die Anwendung des Prinzips der Dependency Inversion in einer realen Entwicklung geben?
sobes.tech KI
Antwort von AI
Das Prinzip der Dependency Inversion (Dependency Inversion Principle, DIP) besagt, dass Module auf hohem Niveau nicht direkt von Modulen auf niedrigem Niveau abhängen sollten, sondern beide von Abstraktionen abhängen sollten.
Beispiel in Java:
// Abstraktion
public interface MessageService {
void sendMessage(String message);
}
// Konkrete Implementierung
public class EmailService implements MessageService {
public void sendMessage(String message) {
System.out.println("E-Mail senden: " + message);
}
}
// Klasse, die von der Abstraktion abhängt, nicht von der konkreten Implementierung
public class Notification {
private MessageService service;
public Notification(MessageService service) {
this.service = service;
}
public void notifyUser(String message) {
service.sendMessage(message);
}
}
// Verwendung
public class Main {
public static void main(String[] args) {
MessageService emailService = new EmailService();
Notification notification = new Notification(emailService);
notification.notifyUser("Hallo!");
}
}
Hier hängt die Klasse Notification von der Schnittstelle MessageService ab, nicht von der konkreten Implementierung EmailService. Dies ermöglicht es, die Implementierung (z.B. auf einen SMS-Dienst) ohne Änderungen am Notification-Code zu wechseln. Dieser Ansatz verbessert die Testbarkeit und Erweiterbarkeit des Codes.