Änderungen

Wechseln zu: Navigation, Suche

Inversion-of-Control

28 Byte hinzugefügt, 14:04, 15. Jul. 2010
Don´t call us, we call you. Ist der Spruch, mit dem laut Legende die Schauspieleragentur in Hollywood Bewerber beglückte. <br/>
Gemeint ist hier: Ja, wir kennen Dich nun, wenn wir Dich brauchen, rufen wir Dich an. Genau nach diesem Prinzip funktioniert auch der Plugin Workflow. Die Rolle der Schauspieleragentur wird dabei natürlich vom Framework übernommen. Die Bundles sind entweder die Schauspieler oder der Produzent der einen Schauspieler benötigt. Damit Schauspieler gefunden werden können, müssen diese sich erst einmal registrieren, genau wie ein Bundle am Framework. Wird in einer Produktion ein bestimmter Schauspieler benötigt, wird dieser durch die Schauspieleragentur vermittelt, ebenfalls genau wie im Equinox - Framework.
<br/>Dieses Prinzip ist auch als das Inversion-of-Control Pattern bekannt. Dieses Pattern gibt es unter anderem in den Ausprägungen Service Locator und Dependency Injection. <br/><br/>
==Dependency Injection==
Hier werden zwei Objekte voneinander entkoppelt, indem ein Objekt ein Interface bereitstellt das vom anderem Objekt implementiert wird. Das Objekt, dass das Interface implementiert sollte keine Kenntnis von dem, dieses Interface veröffentlichenden, Objekt haben. Umgekehrt soll aber auch das Objekt das das Interface veröffentlicht hat und Implementationen des Interfaces nutzen möchte, zur Entwicklungszeit keine Kenntnis von implementierenden Objekten bekommen. Die konkreten Instanzen werden zur Laufzeit von einem sog. Assembler erzeugt und das eine Objekt (das Interface implementierende Objekt) dem anderen Objekt (das Interface veröffentlichende Objekt) injiziert. So weit das Dependency Injection Pattern. <br/>
Belegen wir die Begriffe Objekte, Interface und Assembler mit Begriffen aus der Equinoxwelt, so werden die Zusammenhänge offensichtlich:
* Objekte -> [[Plugins]]* Interfaces -> [[Extension-Points |Extension Point]] * Assembler -> [[Equinox, die Eclipse Platform|das Framework ]]
* Extension -> eine konkrete Implementierung eines Extension-Points
<br/>
Möchte ein Plugin das einen Extension-Point definiert eine entsprechende Extension nutzen muss es am Framework eine Instanz dieser der Extension Klasse erfragen. Dies entspricht dem Prinzip des Dependency Injection Patterns.
<br/><br/>
==Service Locator==
258
Bearbeitungen