I’m currently taking a course titled “Software Engineering Design Principles and Patterns” for my final year college studies at the National University of Singapore. Amongst the many design principles taught to us, Dependency Inversion came across as something rather interesting to explore further.
If you do a quick Google search, you find the following definitions:
“The Dependency Inversion Principle states that high-level modules should not depend on low-level modules. Both should depend on abstractions.”