1. DI == IoC ?
Eine Begriffsbestimmung
Free Software Foundation Europe
Autor
Thomas Schubert
https://wiki.fsfe.org/Fellows/FunThomas424242
2. Dependency Injection
Achso Du meinst
Inversion of Control
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
2/4 (http://www.gnu.org/copyleft/fdl.html)
3. Dependency Injection
Nein Achso Du meinst
Inversion of Control
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
3/4 (http://www.gnu.org/copyleft/fdl.html)
4. Dependency Injection
Ein Objekt A ist abhängig von einem
Objekt B
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
4/4 (http://www.gnu.org/copyleft/fdl.html)
5. 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
License
5/4 (http://www.gnu.org/copyleft/fdl.html)
6. 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
License
6/4 (http://www.gnu.org/copyleft/fdl.html)
7. 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
License
7/4 (http://www.gnu.org/copyleft/fdl.html)
8. Typischer Steuerfluss
A ist von B abhängig
Objekt A
A hängt von B ab
A besitzt die
Steuerung
Objekt B
Übernimmt Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
8/4 (http://www.gnu.org/copyleft/fdl.html)
9. Typischer Steuerfluss
A ist von B abhängig
Objekt A
A hängt von B ab
A besitzt die
Steuerung
A ruft B auf
(Steuerfluss) A ruft B auf
Objekt B
Übernimmt Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
9/4 (http://www.gnu.org/copyleft/fdl.html)
10. Typischer Steuerfluss
A ist von B abhängig
Objekt A
A hängt von B ab
A hat B aufgerufen
A ruft B auf
B übernimmt die
(Steuerfluss) Steuerung
Objekt B
Übernimmt Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
10/4 (http://www.gnu.org/copyleft/fdl.html)
11. Typischer Steuerfluss
A ist von B abhängig
Objekt A
Nach Abarbeitung
gibt B die
Steuerung an A
zurück
A ruft B auf
(Steuerfluss)
Objekt B
Übernimmt Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
11/4 (http://www.gnu.org/copyleft/fdl.html)
12. Typischer Steuerfluss
A ist von B abhängig
Objekt A Zusammenfassung
A hängt von B ab
A ruft B auf
Steuerfluss und
(Steuerfluss) Abhängikeitsgraph
zeigen in die
Objekt B gleiche Richtung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
12/4 (http://www.gnu.org/copyleft/fdl.html)
13. Inverser Steuerfluss
A ist von B abhängig
Objekt A
A hängt von B ab
B besitzt die
Steuerung
Objekt B
Übernimmt Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
13/4 (http://www.gnu.org/copyleft/fdl.html)
14. Inverser Steuerfluss
A ist von B abhängig
Objekt A
A hängt von B ab
B besitzt die
Steuerung
B ruft A auf
(Steuerfluss) B ruft A auf
Objekt B
Übernimmt Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
14/4 (http://www.gnu.org/copyleft/fdl.html)
15. Inverser Steuerfluss
A ist von B abhängig
Objekt A
A übernimmt die
Steuerung
B ruft A auf
(Steuerfluss)
Objekt B
Übernimmt Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
15/4 (http://www.gnu.org/copyleft/fdl.html)
16. Inverser Steuerfluss
A ist von B abhängig
Objekt A
Nach der
Abarbeitung gibt A
die Steuerung an B
zurück
B ruft A auf
(Steuerfluss)
Objekt B
Übernimmt Steuerung
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
16/4 (http://www.gnu.org/copyleft/fdl.html)
17. Inverser Steuerfluss
A ist von B abhängig
Objekt A Zusammenfassung
A hängt von B ab
B ruft A auf
Steuerfluss und
(Steuerfluss) Abhängigkeitsgraph
sind entgengesetzt
Objekt B
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
17/4 (http://www.gnu.org/copyleft/fdl.html)
18. Inverser Steuerfluss
A ist von B abhängig
Objekt A Zusammenfassung
A hängt von B ab
B ruft A auf
Steuerfluss und
(Steuerfluss) Abhängigkeitsgraph
sind entgengesetzt
Objekt B
Beispiel: B is ein Eclipse Plugin
und A eine Plugin Extension
02.06.2012 Rechtlich geschützt durch die GNU Free Documentation
License
18/4 (http://www.gnu.org/copyleft/fdl.html)
19. 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
License
19/4 (http://www.gnu.org/copyleft/fdl.html)
20. 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
License
20/4 (http://www.gnu.org/copyleft/fdl.html)