Registriert seit: 2. Jun 2015
11 Beiträge
Delphi XE7 Architect
|
AW: Probleme mit der Lazy initialization by Spring4d
5. Jun 2015, 12:18
Moin CarlAshnikov,
nein so ist es leider nicht ganz.
Ich habe eine Klasse TColor mit dem dazu gehörigen Interface IColor und eine weitere Klasse TColorPalette mit dem Interface IColorPalette sowohl Color als auch ColorPalette sind im DI-Container Regestriert.
In der TColorPalette gibt es eines Procedure AddColor(color:IColor) die eine Color Objekt an eine Liste anhängt.
Beim Aufruf von AddColor muss ich ja eine neue Instanz von TFarbe aus dem DI-Container hollen und übergeben.
Mit ServiceLocator.GetService<IColor> wär es ja ein leichtes aber das ist ja ein NO-GO.
Darum habe ich versucht diese Lazy Methode zu implementieren, was im endeffekt eine Factory darstellt.
Aber wenn ich versuche von der Factory eine neue Instanz zu bekommen muss ich wieder ungewollte Dependencies machen sonnst kann Delphi damit nix anfangen.
Dann kann ich auch gleich wieder ServiceLocator benutzen.
Es ist halt nervig das man nicht im Vorraus weis ob die Palette 8 oder 32000 Faren haben soll sonnst könnte ich das mit Constructor-Injection erschlagen.
Ich habe auch schon darüber nachgedacht mit Constructor-Injection eine Dummy-Color in meine Palette zu schmuggeln und bei AddColor einen Clon vom Dummy in die Liste zu packen aber dass ist auch nicht ganz koscher denke ich.
MfG Benjamin
Geändert von brieker ( 5. Jun 2015 um 12:21 Uhr)
|