Progress1 / 3
Question
What is the Dependency Inversion Principle and why does it matter?
Click or press Space to reveal
Answer
High-level modules should not depend on low-level modules. Both should depend on abstractions.
Without DIP (tightly coupled):
class OrderService {
private db = new MySQLDatabase(); // Direct dependency
save(order: Order) {
this.db.insert(order);
}
}
With DIP (loosely coupled):
interface Database {
insert(data: unknown): void;
}
class OrderService {
constructor(private db: Database) {} // Injected
save(order: Order) {
this.db.insert(order);
}
}
Benefits: Easier testing, swappable implementations, reduced coupling.
How well did you know this?