Java Reference
In-Depth Information
«interface»
IInjectAbstraktion
«interface»
IAbstraktion
inject(IAbstraktion)
AbhängigeKlasse
ZuInjizierendeKlasse
Bild 1-17 Klassendiagramm für Interface Injection
Die Assoziation zwischen den beiden Interfaces im Bild 1-17 deutet an, dass die bei-
den Interfaces logisch zusammengehören. M. Fowler empfiehlt in [fowioc], dass beide
auch zusammen entworfen werden.
Ein Vorteil von Interface Injection ist, dass eine Klasse durch die Implementierung des
entsprechenden Interface explizit kund tut, dass sie zur Injektion bereit ist. Ein weiterer
Vorteil ist, dass ein solches Interface von mehreren Klassen implementiert werden
kann. Damit wird der Injektor nicht von jeder einzelnen Klasse abhängig, sondern der
Injektor ist nur vom Interface abhängig. Der Nachteil ist, dass jede Klasse , die das
Interface implementiert, von dem Interface abhängig wird.
Implementierungsmöglichkeiten für den Injektor
Häufig übernimmt ein Framework die Rolle des Injektors, dann muss sich eine Anwen-
dung nicht weiter um die Realisierung des Injektors kümmern. Ein Injektor kann aber
auch selbst in einer Anwendung implementiert werden. Das Wissen, welche Verknüp-
fungen wie zu setzen sind, kann dann im Programmcode des Injektors niedergeschrie-
ben sein. Der Injektor selbst hat dann viele Abhängigkeiten, denn er muss ja verschie-
dene Objekte erzeugen und Abhängigkeiten zu diesen Objekten in anderen Objekten
injizieren.
Abhängigkeiten werden daher oft in einer Konfigurationsdatei festgehalten. Eine
Konfigurationsdatei beschreibt die durchzuführenden Verknüpfungen textuell über Na-
men und Abbildungen. Konfigurationsdateien sind heute meist XML-basiert. Die Reali-
sierung von Dependency Injection mittels Konfigurationsdateien bietet mehr Flexibilität,
da die Datei leicht geändert werden kann, ohne dass am Programmcode Folgeän-
derungen nötig werden.
Bei Verwendung einer Konfigurationsdatei werden die Namen
von Klassen bzw. Objekten und Beziehungen dem Framework
erst über den Inhalt der Konfigurationsdatei mitgeteilt. Die Reali-
sierung von Dependency Injection über Annotationen ist ein an-
derer gängiger Weg.
Search WWH ::




Custom Search