.NET  

Dependency Inversion Principle (DIP)

  • Definition: High-level modules should not depend on low-level modules; both should depend on abstractions.
  • Key Idea: Depend on interfaces or abstract classes, not concrete implementations.
  • Example: NotificationManager depends on INotificationSender instead of directly on EmailSender or SmsSender.