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);
    }
}