
Zitat von
Optiplex:
@himitsu
genau das ist mein Problem, da die Klassen sich gegenseitig über Änderungen benachrichten sind diese natürlich im Interface deklariert. Ich hatte gehofft,dass hier jemand vielleicht einen Trick kennt um dieses Problem zu lösen.
* Wollknäuel-Methode (auch als Houdini-Methode bekannt): man beginnt an einem losen Ende in Form einer Klasse ohne Abhängigkeiten zu den anderen (also nur Abhängigkeiten zu Standard-Delphi-Units), das man dann in eine neue
Unit extrahiert.
* Interfaces statt Klassen verwenden z.B. in Methodensignaturen: dadurch kann man die starke Kopplung der Klassen auflösen. Die Interfaces werden in einer neuen
Unit definiert. So können wieder 'lose Enden' entstehen (weitere Klassen, die in eigene Dateien ausgelagert werden können)
* Hilfsklassen in Implementation verschieben. Beispiel:
Delphi-Quellcode:
interface
type
TMyThread = class(TThread)
...
end;
TMyClass = class(TObject)
private
FMyThread: TMyThread;
...
end;
wird zu
Delphi-Quellcode:
interface
type
TMyClass = class(TObject)
private
FMyThread: TThread;
...
end;
...
implementation
type
TMyThread = class(TThread)
...
end;
Das hilft z.B. wenn TMyThread wieder Klassen referenziert, die man lieber niht im interface hätte. Wenn TMyThread in einer eigenen
Unit liegt, ist es wieder 'global' sichtbar, da sollte es nur sein wenn es eine gute Begründung gibt (Geheimnisprinzip).
Cheers,