Plus the situations in which such tools have to be fit and why do we need all these dependency injection?Inversion of control
. Manage dependencies, reducing the coupling between components of the system. That would be something that should depend on depend on something and Vice versa.
Do not think that there are universal approaches. There are different approaches, each of which has its pros and cons.