Many blogs or books will refer to dependency inversion, the example given is also the extraction interface to isolate two modules. So why call it inverted? And then most of the explanation: the previous design software can be from the high-level module calls the underlying module, so that the high-level module is heavily dependent on the underlying module, so to the upside. As for how to reverse the front is to rely on abstraction (interface). But where can you see the meaning of inversion? I think it should be explained in this way:
Even if high-level should not rely on the bottom, then upside down, is that the bottom layer depends on the high? In fact, what we have to do is to isolate each other through interfaces. High-level business needs to be reused, and the underlying modules need to be reused.
The so-called "upside down" personal feel is not really the code level of real dependency, but the realization of logic, the underlying function is based on the needs of the high-level set.
So I think the dependency inversion is more in line with the principle of dependency abstraction.
Whether the inversion of dependency inversion needs to be changed