DI == IoC ?
-
Upload
funthomas424242 -
Category
Education
-
view
260 -
download
2
description
Transcript of DI == IoC ?
DI == IoC ?Eine Begriffsbestimmung
Free Software Foundation Europe
AutorThomas Schubert
https://wiki.fsfe.org/Fellows/FunThomas424242
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License2/4 (http://www.gnu.org/copyleft/fdl.html)
Dependency InjectionDependency Injection
Inversion of ControlInversion of Control
Achso Du meinstAchso Du meinst
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License3/4 (http://www.gnu.org/copyleft/fdl.html)
Dependency InjectionDependency Injection
Inversion of ControlInversion of Control
Achso Du meinstAchso Du meinstNeinNein
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License4/4 (http://www.gnu.org/copyleft/fdl.html)
Dependency Injection Ein Objekt A ist abhängig von einem Objekt B
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License5/4 (http://www.gnu.org/copyleft/fdl.html)
Dependency Injection Ein Objekt A ist abhängig von einem Objekt B
Objekt A erzeugt selbst keine Instanz von Objekt B sondern bekommt die Instanz von außen injiziert
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License6/4 (http://www.gnu.org/copyleft/fdl.html)
Dependency Injection Ein Objekt A ist abhängig von einem Objekt B
Objekt A erzeugt selbst keine Instanz von Objekt B sondern bekommt die Instanz von außen injiziert
Injektion ist möglich über Reflection oder über Setter Methoden von A
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License7/4 (http://www.gnu.org/copyleft/fdl.html)
Dependency Injection Ein Objekt A ist abhängig von einem Objekt B
Objekt A erzeugt selbst keine Instanz von Objekt B sondern bekommt die Instanz von außen injiziert
Injektion ist möglich über Reflection oder über Setter Methoden von A
Erzeugung und Injektion der Instanz B müssen nach der Erzeugung von A aber vor der Benutzung von B durch A stattfinden.
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License8/4 (http://www.gnu.org/copyleft/fdl.html)
Typischer Steuerfluss
Objekt A
Objekt B
Übernimmt Steuerung
A ist von B abhängig
A hängt von B ab
A besitzt die Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License9/4 (http://www.gnu.org/copyleft/fdl.html)
Typischer Steuerfluss
Objekt A
Objekt B
Übernimmt Steuerung
A ist von B abhängig
A hängt von B ab
A besitzt die Steuerung
A ruft B aufA ruft B auf(Steuerfluss)
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License10/4 (http://www.gnu.org/copyleft/fdl.html)
Typischer Steuerfluss
Objekt A
Objekt B
Übernimmt Steuerung
A ist von B abhängig
A hängt von B ab
A hat B aufgerufen
B übernimmt die Steuerung
A ruft B auf(Steuerfluss)
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License11/4 (http://www.gnu.org/copyleft/fdl.html)
Typischer Steuerfluss
Objekt A
Objekt B
Übernimmt Steuerung
A ist von B abhängig
Nach Abarbeitung gibt B die Steuerung an A zurück
A ruft B auf(Steuerfluss)
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License12/4 (http://www.gnu.org/copyleft/fdl.html)
Typischer Steuerfluss
Objekt A
Objekt B
A ist von B abhängig
Zusammenfassung
A hängt von B ab
Steuerfluss und Abhängikeitsgraph zeigen in die gleiche Richtung
A ruft B auf(Steuerfluss)
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License13/4 (http://www.gnu.org/copyleft/fdl.html)
Inverser Steuerfluss
Objekt A
Objekt B
Übernimmt Steuerung
A ist von B abhängig
A hängt von B ab
B besitzt die Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License14/4 (http://www.gnu.org/copyleft/fdl.html)
Inverser Steuerfluss
Objekt A
Objekt B
Übernimmt Steuerung
A ist von B abhängig
A hängt von B ab
B besitzt die Steuerung
B ruft A aufB ruft A auf(Steuerfluss)
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License15/4 (http://www.gnu.org/copyleft/fdl.html)
Inverser Steuerfluss
Objekt A
Objekt B
Übernimmt Steuerung
A ist von B abhängig
A übernimmt die Steuerung
B ruft A auf(Steuerfluss)
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License16/4 (http://www.gnu.org/copyleft/fdl.html)
Inverser Steuerfluss
Objekt A
Objekt B
Übernimmt Steuerung
A ist von B abhängig
Nach der Abarbeitung gibt A die Steuerung an B zurück
B ruft A auf(Steuerfluss)
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License17/4 (http://www.gnu.org/copyleft/fdl.html)
Inverser Steuerfluss
Objekt A
Objekt B
A ist von B abhängig
Zusammenfassung
A hängt von B ab
Steuerfluss und Abhängigkeitsgraph sind entgengesetzt
B ruft A auf(Steuerfluss)
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License18/4 (http://www.gnu.org/copyleft/fdl.html)
Inverser Steuerfluss
Objekt A
Objekt B
A ist von B abhängig
Zusammenfassung
A hängt von B ab
Steuerfluss und Abhängigkeitsgraph sind entgengesetzt
B ruft A auf(Steuerfluss)
Beispiel: B is ein Eclipse Plugin Beispiel: B is ein Eclipse Plugin und A eine Plugin Extensionund A eine Plugin Extension
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License19/4 (http://www.gnu.org/copyleft/fdl.html)
IoC == Inverser Steuerfluss IoC also Inversion of Control bedeutet übersetzt Umkehrung des Steuerflusses also Inverser Steuerfluss.
Trotzdem wird das was auf den vorangegangenen Folien zu sehen war nicht als IoC bezeichnet.
Als IoC bezeichnet man gewöhnlich Container basierte Systeme welche DI nutzen. Der Container übernimmt dabei die Initialisierung und Steuerung.
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License20/4 (http://www.gnu.org/copyleft/fdl.html)
IoC == Inverser Steuerfluss Doch nur weil jetzt der Container die Steuerung übernimmt bedeutet dies nicht, dass sich der Steuerfluss umkehrt. Sonst wäre IoC bereits im J2EE Container zu finden gewesen.
Diese falsche Begriffszuordnung ist historisch gewachsener Schlampigkeit anzurechnen. Begonnen beim Pico Container und immer noch nicht beendet beim Spring Framework.
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License21/4 (http://www.gnu.org/copyleft/fdl.html)
Vielen Dank
für
Ihr Interesse
Photos/Grafiken: ©Thomas Schubert freigegeben zur allgemeinen VerwendungAusnahmen: keine
Schriftsatz: Courier NewErsatz Font: Arial erzeugt durch GoogleDrive, Open Office, Libre Office