AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Thema durchsuchen
Ansicht
Themen-Optionen

ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

Ein Thema von Mavarik · begonnen am 6. Feb 2014 · letzter Beitrag vom 9. Feb 2014
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 6. Feb 2014, 15:16
Leider geht das so nicht. Deshalb gibt es in Spring4d auch relativ komplexe Logik, um den "best matching" Konstruktor zu finden.
Dein Einwand bezieht sich aber "nur" auf Konstruktoren die Parameter haben, oder?

Der Einfache TFoo.Create; macht doch keine Probleme...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#12

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 6. Feb 2014, 15:30
Leider geht das so nicht. Deshalb gibt es in Spring4d auch relativ komplexe Logik, um den "best matching" Konstruktor zu finden.
Dein Einwand bezieht sich aber "nur" auf Konstruktoren die Parameter haben, oder?

Der Einfache TFoo.Create; macht doch keine Probleme...

Mavarik
Ja, aber da du im Eingangspost erwähnt hast, dass es für TForm ginge, hab ich das geschrieben. Denn obwohl der Source kompiliert und auch TForm.Create aufgerufen wird (was ja nicht gehen dürfte, denn der ist durch den TComponent Konstruktor nunmal verdeckt), wird das Form ziemlich vor die Wand semmeln, da alles, was so in den Konstruktoren ab TComponent gemacht wird, nicht ausgeführt wird.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 6. Feb 2014, 15:35
Ja, aber da du im Eingangspost erwähnt hast, dass es für TForm ginge,
Nein! Geht mir um normale Klassen für TForms habe ich schon ein Formfactory programmiert.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 6. Feb 2014, 16:01
Noch'n Tip: Lagere das Register in eine extra Unit aus und mach das nicht im initialization Part der Unit mit der Klasse.
Dadurch erreichst du nämlich keineswegs eine Entkopplung sondern nur 1. Untestbarkeit deiner Klasse (dadurch, dass sie im Implementation Teil deiner Unit versteckt ist) und 2. indirekte Kopplung deiner Klasse auf den Container (dadurch, dass die Container Unit im Uses deiner Klassen Unit steht).
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 6. Feb 2014, 19:13
Noch'n Tip: Lagere das Register in eine extra Unit aus und mach das nicht im initialization Part der Unit mit der Klasse.
Dadurch erreichst du nämlich keineswegs eine Entkopplung sondern nur 1. Untestbarkeit deiner Klasse (dadurch, dass sie im Implementation Teil deiner Unit versteckt ist) und 2. indirekte Kopplung deiner Klasse auf den Container (dadurch, dass die Container Unit im Uses deiner Klassen Unit steht).
Sehe ich anders. Im InitPart ist es schön! Da ja auch die Klasse in der Unit definiert ist. Die Referenz zum Container stört mich nicht. Wie soll ich den das in einer anderen Unit machen? Aus einer anderen Unit komme ich doch nicht an die Klasse ran!

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#16

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 6. Feb 2014, 19:56
Stevie hat aber Recht mit der Entkopplung. Das hatten wir gestern schon mal. Genau wie Supports
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 6. Feb 2014, 20:01
Wie soll ich den das in einer anderen Unit machen? Aus einer anderen Unit komme ich doch nicht an die Klasse ran!
Ganz einfach!

Delphi-Quellcode:
unit MyInterfaces;

interface

const
  SID_Sample : string = '{13B2116B-B78B-4E89-8070-83F9E36720EF}';
  SID_OtherSample : string = '{74EF1A68-1EED-4DA4-9845-5F77AEB6D2DA}';

type
  ISample = interface(IUnknown)
  [SID_Sample]
    procedure Foo;
    function Bar : Boolean;
  end;

  IOtherSample = interface(IUnknown)
  [SID_OtherSample]
    procedure FooFoo;
    function BarHocker : Boolean;
  end;

implementation

end.
Den Spaß werden wir hier implementieren:
Delphi-Quellcode:
unit MyClasses;

interface

uses
  MyInterfaces;

type
  TMySampleClass = class(TInterfacedObject, ISample)
  private
    function Bar: Boolean;
    procedure Foo;
  end;

  TMyOtherSampleClass = class(TMySampleClass, IOtherSample)
  private
    function BarHocker: Boolean;
    procedure FooFoo;
  end;

implementation

{blablabla - Methoden über Methoden}

end.
Die Unit Container ist ja jedem hier bekannt; so melden wir alle schön an:
Delphi-Quellcode:
unit RegisterMyClasses;

interface

implementation

uses
  Container, MyInterfaces, MyClasses;

initialization
  Container.GlobalContainer.RegisterClass<ISample, TMySampleClass>;
  Container.GlobalContainer.RegisterClass<IOtherSample, TMyOtherSampleClass>;

end.
Tataaaa!
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 6. Feb 2014, 20:17
Wie war noch das Design-Pattern!

Niemals Klassendefinitionen im Interface Teil. Sonst Referenziert man noch dagegen?

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#19

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 7. Feb 2014, 08:59
@Mavarik
Den Zahn hab ich Nick Hodges schon lange gezogen, der das ne Weile gepredigt hat - aus genau den oben genannten Gründen.
Das Verstecken von Klassen im Implementation Teil, damit sie ja keiner so nutzt, ist Unfug, wenn man sie dann über ein Interface von hintenrum verfügbar macht. Denn das ist der Tod für jegliche Testbarkeit der Klasse und dann fangen einige an, mit Compiler switches und weiß der Teufel das ganze für Unittests sichtbar zu machen. Außerdem ist das garantiert kein Design Pattern sondern eine Delphi Eigenheit.

Außerdem sollte man seinen Code so schreiben, dass er auch ohne einen DI Container durch manuelles Zusammenstecken funktionieren würde. Und das ist hier auch nicht der Fall.

@TiGü
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 7. Feb 2014 um 09:08 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!

  Alt 7. Feb 2014, 10:12
Ich habe den Thread noch nicht gelesen und mir für's Wochenende aufgehoben.

Weniger zu Spring (für deine unermüdliche Arbeit an Spring4D stelle ich in meinem Garten irgendwann mal eine Statur mit Lorbeerkranz von dir auf), sondern zu Klassen-Sichtbarkeit:

Klassendefinitionen als Ersatz für "protected/package/... class" in den implementation-Teil zu schieben handhabe ich teilweise auch noch so. Habt Ihr die Diskussion öffentlich geführt? Rein interessenshalber.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 03:49 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