Dependency inversion talks about the coupling between the different classes or modules.
The main motto of the dependency inversion is Any higher classes should always depend upon the abstraction of the class rather than the detail.
This aims to reduce the coupling between the classes is achieved by introducing abstraction between the layer, thus doesn’t care about the real implementation.
Now let’s see how a naive design would look without any dependency inversion and what are the loopholes in that design:
The creation of the abstraction between different employees and Manager has resulted in very good looking design code which is easily maintainable and extendable: