Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Dependency Injection: Injektion bestehender Objekte in ein neues (https://www.delphipraxis.net/170070-dependency-injection-injektion-bestehender-objekte-ein-neues.html)

s.h.a.r.k 29. Aug 2012 12:59

Dependency Injection: Injektion bestehender Objekte in ein neues
 
Hallo zusammen,

habe da eine allgemeine Frage zum Thema Dependency Injection. Und zwar geht es im Speziellen um folgenden Sachverhalt: ich programmiere eine Anwendung, die Daten aus SAP lädt und anzeigt. Ich habe eine Application-Klasse, die in der Run-Methode eine Verbindung zu SAP aufbaut. Ist dies geglückt erstelle ich einen Daten-Controller, der Daten über die vorhandene Verbindung lädt und dann in der View darstellt.

So, nun habe ich, ausgehend von der Application-Klasse, die Abhängigkeiten zur SAP-Verbindungs-Klasse und der Controller-Klasse. Der Controller wiederum hängt von der SAP-Verbindungs-Klasse ab.

Habe bisher alles via Konstruktur-Injektion umgesetzt, da ich bisher die etwas naive Sicht gefahren habe, dass jede Klasse, die spezielle Komponenten benötigt, im Konstruktor nach einer passenden Instanz fragt. In meinem Beispiel stoße ich nun aber auf das Problem, dass ich die Application-Klasse eine SAP-Verbindungs-Instanz injiziert bekommt und genau diese soll auch automatisch in den Controller injiziert werden.

Ich könnte nun fragen, wie ich das am sinnvollsten hinbekomme, ohne dass ich jede Schnittstelle mit beliebig vielen Settern aufblase und dann die Eigenschaften immer manuell setze und im Code auf eine vorhandene Instanz prüfe. Ich glaube aber eher, dass ich einen Denkfehler bzgl. meinem Vorgehen habe, da ich doch eher neuer in dem Bereich DI bin. Bitte um Klärung, wie es gemacht werden sollte :zwinker:

DanielJ 13. Sep 2012 11:53

AW: Dependency Injection: Injektion bestehender Objekte in ein neues
 
Hallo,

letztendlich kannst du doch Abhängikeiten nur per Konstruktor oder Setter injezieren. Wenn das nicht "schön" ist, ist u.u. DI nicht das passende Pattern? Vergl. Service Locator als Alternative.
- Vieleicht ist ein gemeinsames Konfigurationsobjekt die Lösung um die Abhängikeiten etwas zu entwirren?
- Kommt für die Verbindung ein Singleton/ eine Fabrik in Frage, bei der sich Applikation und Controller ohne wissen von einander bedienen können?

Vieleicht solltest du noch etwas konkreter werden, denn anhand deiner sehr abstrakten Beschreibungen kann ein Denkfehler kaum vom geneigten Leser erkannt werden.

LG,
Daniel


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz