DI == IoC ?

539 views
475 views

Published on

Die ständige Gleichsetzung von Dependency Injection mit Inversion of Control mal kritisch betrachtet.

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
539
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

DI == IoC ?

  1. 1. DI == IoC ? Eine BegriffsbestimmungFree Software Foundation Europe Autor Thomas Schubert https://wiki.fsfe.org/Fellows/FunThomas424242
  2. 2. Dependency Injection Achso Du meinstInversion of Control02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense2/4 (http://www.gnu.org/copyleft/fdl.html)
  3. 3. Dependency Injection Nein Achso Du meinstInversion of Control02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense3/4 (http://www.gnu.org/copyleft/fdl.html)
  4. 4. Dependency Injection  Ein Objekt A ist abhängig von einem Objekt B02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense4/4 (http://www.gnu.org/copyleft/fdl.html)
  5. 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 injiziert02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense5/4 (http://www.gnu.org/copyleft/fdl.html)
  6. 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 A02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense6/4 (http://www.gnu.org/copyleft/fdl.html)
  7. 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 DocumentationLicense7/4 (http://www.gnu.org/copyleft/fdl.html)
  8. 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. 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. 10. Typischer Steuerfluss A ist von B abhängigObjekt A  A hängt von B ab  A hat B aufgerufen A ruft B auf  B übernimmt die (Steuerfluss) Steuerung Objekt B Übernimmt Steuerung02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense10/4 (http://www.gnu.org/copyleft/fdl.html)
  11. 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. 12. Typischer Steuerfluss A ist von B abhängigObjekt A Zusammenfassung  A hängt von B ab A ruft B auf  Steuerfluss und (Steuerfluss) Abhängikeitsgraph zeigen in die Objekt B gleiche Richtung02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense12/4 (http://www.gnu.org/copyleft/fdl.html)
  13. 13. Inverser Steuerfluss A ist von B abhängigObjekt A  A hängt von B ab  B besitzt die Steuerung Objekt B Übernimmt Steuerung02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense13/4 (http://www.gnu.org/copyleft/fdl.html)
  14. 14. Inverser Steuerfluss A ist von B abhängigObjekt A  A hängt von B ab  B besitzt die Steuerung B ruft A auf (Steuerfluss)  B ruft A auf Objekt B Übernimmt Steuerung02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense14/4 (http://www.gnu.org/copyleft/fdl.html)
  15. 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. 16. Inverser Steuerfluss A ist von B abhängigObjekt A  Nach der Abarbeitung gibt A die Steuerung an B zurück B ruft A auf (Steuerfluss) Objekt B Übernimmt Steuerung02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense16/4 (http://www.gnu.org/copyleft/fdl.html)
  17. 17. Inverser Steuerfluss A ist von B abhängigObjekt A Zusammenfassung  A hängt von B ab B ruft A auf  Steuerfluss und (Steuerfluss) Abhängigkeitsgraph sind entgengesetzt Objekt B02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense17/4 (http://www.gnu.org/copyleft/fdl.html)
  18. 18. Inverser Steuerfluss A ist von B abhängigObjekt A Zusammenfassung  A hängt von B ab B ruft A auf  Steuerfluss und (Steuerfluss) Abhängigkeitsgraph sind entgengesetzt Objekt BBeispiel: B is ein Eclipse Plugin und A eine Plugin Extension02.06.2012 Rechtlich geschützt durch die GNU Free DocumentationLicense18/4 (http://www.gnu.org/copyleft/fdl.html)
  19. 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 DocumentationLicense19/4 (http://www.gnu.org/copyleft/fdl.html)
  20. 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 DocumentationLicense20/4 (http://www.gnu.org/copyleft/fdl.html)
  21. 21. Vielen Dank für Ihr InteressePhotos/Grafiken: ©Thomas Schubert freigegeben zur allgemeinen VerwendungAusnahmen: keineSchriftsatz: Courier NewErsatz Font: Arial erzeugt durch GoogleDrive, Open Office, Libre Office 02.06.2012 Rechtlich geschützt durch die GNU Free Documentation License 21/4 (http://www.gnu.org/copyleft/fdl.html)

×