Object Oriented Design Patterns
Dependency Inversion is one of the last principles we are going to look at. The principle states that:
High-level modules should not depend on low-level modules. Both should depend on abstractions.
Abstractions should not depend on details. Details should depend on abstractions.