What does the Dependency Inversion Principle (DIP) mean?
Answer
The Dependency Inversion Principle has two rules: (1) High-level modules should not depend on low-level modules — both should depend on abstractions. (2) Abstractions should not depend on details — details should depend on abstractions. Without DIP, a ReportService (high-level) might directly instantiate a MySQLDatabase (low-level), creating tight coupling. With DIP, ReportService depends on a DatabaseInterface abstraction, and MySQLDatabase implements that interface. You can swap in PostgreSQLDatabase or MockDatabase without changing ReportService. DIP is the foundation of dependency injection and is critical for testability.
Previous
What does the Interface Segregation Principle (ISP) mean?
Next
Why are SOLID principles important in software development?