 Again, both are linked by interfaces.Applying the dependency inversion principle can also be seen as an example of the adapter pattern, i.e.the high-level class defines its own adapter interface which is the abstraction that the other high-level classes depend on.