![]() |
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Zitat:
Wir beide betrachten DI und "coding against abstractions" nicht als Selbstzweck, sondern als Mittel zu entkoppeltem und damit isoliert testbarem Source. Und das erreicht man nicht, wenn man die eine offensichtliche Kopplung - nämlich die Benutzung einer konkreten Implementierung (Klasse) statt einer Abstraktion (Interface oder abstrakte Klasse) - durch eine andere - nämlich die Kopplung auf den Container - ersetzt. Wenn ich also meine TMySampleClass nicht mehr in einem Projekt benutzen kann, ohne den Container auch zu benutzen (da er ja fest in der Unit verdrahtet ist), dann läuft was falsch. P.S. :mrgreen: |
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Zitat:
Ich finde es einfach praktisch, nicht eine Uses Zeile mit 30 Units zu haben, sondern nur eine für den Container. Es hat sich mir auch nicht erschlossen, warum ich die Implementierung des Interfaces nicht in der gleichen Unit machen soll. Mavarik |
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Zitat:
Man merkt sowas immer schnell, wenn man mal kurz eine kleine Testapplikation schreibt, welche ein
Delphi-Quellcode:
testen will. Und plötzlich wundert man sich, dass in die Anwendung auch
TToaster
Delphi-Quellcode:
,
TStadtwerke
Delphi-Quellcode:
,
TUmspannwerk
Delphi-Quellcode:
und
TKraftwerk
Delphi-Quellcode:
einkompiliert werden, nur weil man den
TBraunkohletagebau
Delphi-Quellcode:
an den Strom anschließen kann. :)
TToaster
Ich stimme dir aber zu, wenn man das so praktiziert, kann das zu langen uses Klauseln kommen, dahingehend hat man es in Java oder C# einfacher mit richtigem Namespacing (so nach dem Motto
Delphi-Quellcode:
statt
uses MyLib.*;
Delphi-Quellcode:
).
uses MyLib.Foo, MyLib.Bar, MyLib.MoreStuff, ...;
|
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Zitat:
|
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Zitat:
15 Interface-Units + 15 Class-Units (+ Container-Unit) in der Uses-Sektion der Register-Unit. Alles übersichtlich auf einen Blick, die Interfaces und Classes wissen nichts von den DI-Kram. oder In den 15 Class-Units die Container-Unit inkludieren. Bisschen weniger in der Uses-Sektion, aber man halt wieder diese Abhängigkeit. |
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Meine persönliche Meinung auch:
Echte Namespaces würden Delphi sicher gut tun, aber viel zu häufig sehe ich in anderen Sprache Leute mit allem möglichen immer
Delphi-Quellcode:
includen. In Delphi ist das sicher noch stärker ein Problem da ich (zumindest in der RTL und VCL) oft richtig viel Code in den initialization/finalization-Blöcken sehe und der Linker die (eigentlich unbenutzten) Sachen nicht wieder entfernt.
.*
Ich bin sogar eher ein Freund von vielen Units in der uses-Clause. Man kann allein daran schon irgendwie sehen, was los ist. Genauso ist der eigene var-Block in Methoden etwas, das ich an Pascal wirklich lieben gelernt habe. In anderen Sprachen fehlt mir das. Aber wir kommen irgendwie auch vom Thema ab 8-) |
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Zitat:
|
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Zitat:
Beispiel:Ich definiere im interface nur den Getter, aber die Klasse hat 'intern' auch einen Setter, weil das nunmal für die Implementierung des Subsystems notwendig ist. Nur die Anwender (also die, die nur das Interface sehen) sollen nur den Getter sehen bzw. benutzen dürfen. Ich bin schon ne Weile nicht mehr so in Delphi drin, daher ist die Frage bestimmt ein wenig blöd. Welche Frage eigentlich? Ach, ja: s.o. ;-) |
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Die Frage hat doch mit dem Beispiel nichts zu tun?
Das (public|<nichts>) in Java bzw. (public|internal) in C# für Typen gibt es in Delphi schlichtweg nicht. Sichtbarkeit halt nur entweder "Alle" oder "Nur diese Unit" - Je nachdem ob die Deklaration im Interface- oder Implentation-Teil stattfindet. Namespaces bzw. Packages gibt es grundsätzlich nicht, deshalb erübrigt sich dann auch der Gedanke, bsp. den Setter nur im Package und nicht außerhalb verfügbar zu machen. Die Delphi-Dokumentation nennt es gerne Namespaces, aber das ist schlichtweg nicht wahr. Es sind einfach nur Prefixe im Unit-Namen. |
AW: ClassFactory ähnlich wie Spring Framework, Hilfe gesucht!
Wenn ich richtig informiert bin, macht man aber auch in C# solche Klassen, über die wir hier sprechen nicht internal sondern public, auch wenn man sie direkt nicht benutzt bzw instanziiert.
Denn auch dort schreibt man DI Container Code ja nicht direkt in diesen Namespace sondern hat einen extra Codebereich dafür (oder machts über XML). Womit wir wieder beim gleichen "Problem" wären. Man versteckt die Klassen ja nicht, damit irgendein unwissender Entwickler sie nicht aus Versehen benutzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 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-2025 by Thomas Breitkreuz