|
Autor |
Nachricht |
boris
Beiträge: 11057
|
Titel: DLW 2008: Aspect-Oriented Prog. and Dependency Injection
Verfasst am: Sa, 18 Apr 2009, 11:17 |
|
|
Aspect-Oriented Programming and Dependency Injection
Robert Lemke, Typo3 Association (Flow3)
27.5.2008, 16:00, Raum 1.31, ca. 20 Personen
- Dependency Injection (DI)
Minimiert die Abhängigkeit zwischen Komponenten und Objekten in objektorientierten Systemen.
Eine Klasse holt sich z.B. eine Instanz nicht (mehr) selbst sondern bekommt sie übergeben ("injiziert") – so kann z.B. zum Testen ganz einfach ein Dummy-Objekt (oder eine Dummy-Methode) übergeben werden, ohne dass erst aufwändig Code-Änderungen vorgenommen werden müssen.
Durch die Abtrennung des Codes vom Framework wird der Code wiederverwendbar, so können z.B. sämtliche an ein Framework gebundene Methoden einfach ausgetauscht werden.
- Spezielle Funktionen aus Flow3 für DI sind der "Component Manager" und das sogenannte "Autowriting", auf die aber nur kurz eingegangen wurde.
- Kritik (im Vortrag nicht erwähnt): Teilweise wird Programmlogik in Konfigurationsdateien ausgelagert, was die Wartbarkeit erschwert.
- Aspect Oriented Programming (AOP)
Aspektorientierte Programmierung ist eine Programmier-Philosophie ("programming paradigm"), die zentral von der Fragestellung ausgeht, was die Software "eigentlich" machen soll (Zielsetzungen / Anforderungen = "concerns"). Sicherheit, Logging und Persistenz werden dabei eher als "Ablenkungen" verstanden.
Die "concerns" sollen in der Programmierung zum einen getrennt voneinander entworfen, entwickelt und getestet werden, zum anderen aber zentralisiert (nachher zusammengefügt) werden.
- Das Entwickeln und Testen von "concerns" in AOP läuft daher (speziell in der Testphase) über das "Abfangen" von Methodenaufrufen hinaus, was auch später insbesondere für Logging (wer hat wann, wie und mit welchen Parametern welche Methode aufgerufen?) und Sicherheit (ist der Methodenaufruf mit diesen Parametern, zu diesem Zeitpunkt und von diesem Benutzer erlaubt?) zum Einsatz kommt, aber auch bei Transaktionen und Statistiken Verwendung findet.
So kann neuer Code und neues "Code-Verhalten" zu bestehendem Code hinzugefügt werden, ohne dass man diesen ändern müsste.
Fazit: Interessanter, ganz gut dargebrachter Vortrag und interessante Einführung in das Thema.
Kleine, zu vernachlässigende Nachteile: "Live-Vorführung" am Quellcode funktionierte nicht. Beispiele nur anhand von Flow3.
Ressourcen:
http://www.robertlemke.de (Präsentation leider nicht online)
http://flow3.typo3.org (Flow3: "PHP-based enterprise application framework")
http://forge.type3.org
Programminfo:
This session introduces two powerful techniques which support a clean design of enterprise applications and the implementation of a domain-driven design. In addition to the theoretical background you will learn how to take advantage of AOP and DI in your own projects. The examples given are based on the brand new TYPO3 Application Framework.
____________ beehave - home of humbug ... [we can't afford to be neutral]
|
|
Nach oben |
|
|
|
ähnliche Beiträge |
|
Thema
| Autor
| Forum
| Antworten
| Verfasst am
|
|
Sie hören gerade..... (2008) |
Frederik |
silikonimplantate |
153 |
Do, 17 Sep 2009, 22:48 |
|
DLW 2008: Understanding the PHP Object-Model |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 12:27 |
|
DLW 2008: Advanced Object-Oriented JavaScript |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 12:21 |
|
DLW 2008: Speaker Panel: Top Speakers from Ruby, Groovy |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 12:16 |
|
DLW 2008: Metaprogramming with Ruby |
boris |
hal9000 |
0 |
Sa, 18 Apr 2009, 12:13 |
Schreiben: nein. Antworten: nein. Bearbeiten: nein. Löschen: nein. Umfragen: nein.
|