Hinweis: Dies wurde von meinem früheren Beispiel vollständig umgeschrieben
Denken Sie an Steckdosen. In jedem Land gilt die Politik auf höchster Ebene, dass Steckdosen immer gleich sind. Es spielt keine Rolle, woher Sie Ihren Strom beziehen (Kohle, Gas, Atom). Die Steckdosen an der Wand sollten immer die gleiche Strommenge über die gleichen Anschlüsse abgeben.
Jetzt können Sie jedes Gerät an diese Buchse anschließen, da alle Geräte eine gemeinsame Schnittstelle haben, den "Stecker". Die übergeordnete Richtlinie muss niemals einen Teil dieser Implementierungsdetails vorschreiben. Einfach etwas einstecken und es geht.
Wenn Sie ein Gerät haben, das keine Wechselstromversorgung benötigt - möglicherweise wird es mit einem 7-V-Gleichstromkreis betrieben -, können Sie diese übergeordnete Richtlinie weiterhin verwenden. Sie benötigen lediglich eine Art Adapter zwischen dem Netzteil und dem Gerät. Und da alle dieselbe Richtlinie auf hoher Ebene haben, kann der Hersteller dies in die Implementierung einbauen, ohne Änderungen an der Richtlinie auf hoher Ebene vorzunehmen. Die Person, die die Implementierung mit der Richtlinie verbindet (Sie schließen Ihren Laptop an), muss dies auch nicht wirklich verstehen.
Wenn der Hersteller dasselbe Gerät in einem anderen Land verkaufen möchte, muss er lediglich einen anderen Adapter entwickeln. Dieselbe Implementierung kann also mit mehreren Richtlinien arbeiten, während dieselbe Richtlinie mehrere Implementierungen ausführen kann.
Dies ist ein perfektes Beispiel für die Abhängigkeitsinversion.
Aber hier ist das Interessante: Kehren Sie zu dem zurück, was ich zuerst gesagt habe. "Es ist egal, woher Sie Ihren Strom beziehen." Dies ist auch ein Implementierungsdetail. Auf höchster Ebene wird weiterhin davon ausgegangen, dass alle Steckdosen dieselbe Form haben und dieselbe Art von Strom abgeben. Die Details der Implementierung auf niedriger Ebene sind sowohl, woher der Strom kommt, als auch, wie er läuft.
In Bezug auf die Programmierung bedeutet dies, dass die übergeordnete Richtlinie die Schnittstelle ist (sofern eine Sprache dies unterstützt. Eine andere Form der DI ist die Duck-Typisierung.), Die eine API bereitstellt und die von der Anwendung verwendet wird Anwendung verbraucht es und die API selbst, die sich nicht verstehen müssen.
Adapter können verwendet werden, um dieselbe Implementierung in verschiedene Richtlinien einzufügen.