Siehe etwa die Einführung http://martinfowler.com/articles/injection.html von Martin Fowler.
Martin Fowler stellt zwei unterschiedliche Vorgehensweisen gegeneinander: "Dependency Injection" und "Service Locator".
Ein "Service Locator" stellt für die Anwendung auf Anfrage die gewünschte Komponente (das gewünsche Plugin) bereit und liefert ihr einen Pointer (auf eine Funktion oder ein Interface) zurück, über den die Anwendung dann den gewünschten Dienst in Anspruch nehmen kann. Anders als bei der "Dependency Injection" muss die Anwendung hierbei also selbst aktiv werden und die Schnittstelle zu dem Service Locator bedienen.
Bei der Dependency Injection speichert ("injiziert") ein Konfigurator-Modul in einer Initialisierungs-/Konfigurierungs-Phase von sich aus ("Inversion of Control") einen ebensolchen Pointer in ein Feld der Anwendungsklasse, der den gewünschten Dienst (die gewünsche Komponente, das gewünschte Plugin) für die Anwendung zugänglich macht.
Siehe auch: