Du wendest das Dependency Inversion Prinzip an, indem du:
- Schnittstellen (Interfaces oder abstrakte Klassen) definierst, von denen sowohl das aufrufende als auch das aufgerufene Modul abhängen
- Konkrete Implementierungen außerhalb des Moduls bereitstellst – z. B. über Dependency Injection Frameworks
🔧 Beispiel in C#:
public interface IMessageSender {
void Send(string message);
}
public class EmailSender : IMessageSender {
public void Send(string message) => Console.WriteLine("Email: " + message);
}
public class NotificationService {
private readonly IMessageSender _sender;
public NotificationService(IMessageSender sender) {
_sender = sender;
}
public void Notify(string message) {
_sender.Send(message);
}
}