Hallo Hagen,
Zitat von
negaH:
was soll das [dependency injection] sein ?
puh... Das haben andere Leute (auch unter dem Namen
Inversion of Control Container) viel besser erklärt, als ich das wohl hier könnte. Leider fehlt mir dazu im Augenblick die Zeit, das genauer vorzustellen, gehe aber davon aus, dass die inzwischen gut verwendbare Lösung "eines Tages" der Öffentlichkeit vorgestellt/zur Verfügung gestellt wird.
Zitat von
negaH:
Normalerweise designe ich die Schnittstelle für die Plugins aus Sicht der Erfordernissen der Anwendung die diese Schnittstelle zur Verfügung stellen will, nicht umgekehrt.
Klingt vernüftig! Ich habe hier auf der anderen Seite ein System, in das ich -salop ausgedrück- "alles reinwerfe, was ich habe" und heraus kommt ein konfiguriertes System. Wenn ein Fenster eine Datenbankverbindung benötigt, macht es das durch entspr. Komponenten kenntlich, wie sonst. Benötigt eine ordinäre Klasse diese Verbindung, deklariert es das zB per Published Property, die nicht gespeichert wird, sollen nicht veränderbare Klassen verwendet werden, die Abhängigkeiten haben, gibt es spezielle Adapter, die das Ummanteln.
Ziehe ich jetzt -sprichwörtlich- "an der Schnur" ein beliebiges Objekt heraus, wird es mit der Datenbankverbindung verknüpft, die ihrerseits zunächst erzeugt wird (? kommt darauf an, wie der zuständige Adapter das macht), die dazu zB einen Logger benötigt, der seinerseits diverse Senken unterstüzt, die ihrerseits zB eine Internetverbindung benötigen, usw. und voilá das Fenster ist erzeugt.
Die "Injektion" besteht darin, dass keine dieser Klassen beschreibt, welche konkrete Klasse wann wo erzeugt wird, um das Problem zu lösen. Stattdessen tut sie das was sie soll: Exemplare des beschriebenen Typs
verwenden und nicht
erzeugen.
Die Tatsache, dass nun solche "Komponenten" aus Plugins erzeugt werden, ist eher... nettes Beiwerk (oder eben auch nicht).
Ich stelle das gerne zu einem späteren Zeitpunkt genauer vor. Solange bleibt mir zu sagen: Funktioniert prima
Zitat von
negaH:
ich kann heut noch nicht verstehen warum sich echte Programmierer wie wir sich JAVA als Vorbild nehmen
Dann würde ich mich nicht als "echten Programmierer" bezeichnen (obwohl ich mir häufig lieber die Vorbilder von Java zum Vorbild nehme). Schließlich kommt die Zauber-Routine von oben ja auch von Dir und nicht von mir