 This dependency upon lower-level components limits the reuse opportunities of the higher-level components.The goal of the dependency inversion pattern is to avoid this highly coupled distribution with the mediation of an abstract layer, and to increase the re-usability of higher/policy layers.With the addition of an abstract layer, both high- and lower-level layers reduce the traditional dependencies from top to bottom.