AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Custom Constructor /DI bei factory-basierter Objekterstellung
Thema durchsuchen
Ansicht
Themen-Optionen

Custom Constructor /DI bei factory-basierter Objekterstellung

Offene Frage von "freimatz"
Ein Thema von Sequitar · begonnen am 27. Jan 2018 · letzter Beitrag vom 26. Mär 2018
 
Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Custom Constructor /DI bei factory-basierter Objekterstellung

  Alt 12. Feb 2018, 16:32
Wie genau ist das mit dem "per Hand machen" (pure DI) gemeint? Ist das nicht sowas wie
Delphi-Quellcode:
Constructor TX.Create(dep:TY;dep2:TZ);
begin
//init with dep,dep2
end;
Ja, mit dem kleinen unterschied, dass der Konstruktor am besten auch interfaces injected bekommt und nicht Objekte.

Pure DI ist dann das hier:

Delphi-Quellcode:
var
  x: IX;
  y: IY;
  z: IZ;
begin
  y := TY.Create(...);
  z := TZ.Create(...);
  x := TX.Create(y, z);
Und genau das macht ein DI Container auch. Wenn du ein IX haben willst, weiß er, dass er erst ein IY und IZ braucht (also TY und TZ bauen muss, evtl mit deren Abhängigkeiten) und gibt die dann beim Konstruktoraufruf mit.

Ich hab vor einiger Zeit mal nen Mini DI Container gebaut, der das schon kann - ohne das ganze fancy Extra Zeugs, was der Spring Container kann.
Danke für die Infos,
So hab ich mir das auch vorgestellt.(IY;IZ zu nutzen ist naturlich sehr sinnvoll). Das problem bei dieser Lösung ist nur dass ich bis auf ausnahmen der in einem gemeinsamen package declarierten Typen nicht so einfach anwenden kann. (Also entweder müsste ich auf statische packages zurück, alle Klassen irgendwo gemeinsame Vorfahren mit Constructor TBase.Create(a,b,c:iirgendwas);virtual; haben lassen oder es gibts noch einen anderen weg,über DLL's  X:=Tx.create(y:ianinterface,z:ianotherinterface) zu finden und mit Params Y und Z aufzurufen (evtl RTTI, so wie im o.g beispielsimple DI container)?
Und genau DAS ist zzt mein problem...ohne parameter ist ja einfach>>Tclass

Geändert von Sequitar (12. Feb 2018 um 16:39 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz