Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Class Helper als Lösung für zirkuläre Unit-Referenzen (https://www.delphipraxis.net/176296-class-helper-als-loesung-fuer-zirkulaere-unit-referenzen.html)

Furtbichler 27. Aug 2013 06:44

AW: Class Helper als Lösung für zirkuläre Unit-Referenzen
 
Zitat:

Zitat von jaenicke (Beitrag 1226339)
aber solange man Interfaces nicht in die gleiche Datei packt, hat man das gleiche Problem.

Und wenn man sie in eine Datei packt (bzw. nur die voneinander abhängigen Interfaces), dann eben nicht. :wink: Es ist nun einmal eine Spracheigenschaft von Delphi, mehrere Klassen in einer Datei halten zu können um damit bestimmte Dinge zu regeln (private vs. strict private und eben Forward-Deklarationen).

Der klassische Ansatz ist die Forward-Deklaration:
Delphi-Quellcode:
Type
  THund = Class;

  THundebesitzer = Class
    Property Hund : THund...
  end;
 
  THund = Class
    property Besitzer : THundebesitzer;
  End;
Und eigentlich ist das sehr schön lesbar, denn sobald man auf eine Forward-Deklaration stößt, weiß man, das hier Kreise im Spiel sind.

Im Übrigen löst die VCL das Problem der zirkulären Referenzen ja nicht, weil sie TCustomXXX und TXXX implementiert, sondern indem sie die Klassen in einer Datei vorhält (soweit ich das überschaue, jedenfalls).

jaenicke 27. Aug 2013 07:37

AW: Class Helper als Lösung für zirkuläre Unit-Referenzen
 
Zitat:

Zitat von Furtbichler (Beitrag 1226344)
Und eigentlich ist das sehr schön lesbar, denn sobald man auf eine Forward-Deklaration stößt, weiß man, das hier Kreise im Spiel sind.

Lesbar schon, gut testbar weniger.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.
Seite 4 von 4   « Erste     234   

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