Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

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

AW: Projekt auf Interfaces umstellen

  Alt 11. Apr 2012, 16:38
Klares "kommt drauf an". Hängt vom vorhandenen Design der Anwendung ab. Lässt sich diese ohne große Umbauten auf Interfaces umstellen, ohne dass du in AVs und invalid pointer Exceptions rennst, weil das ganze Lifetime Management deiner Instanzen so vertrackt ist.

Bei der Benutzung von Interfaces musst du dir auch im Klaren darüber sein, wie das Interface aussehen soll und ob du bei einem Plugin System abwärtskompatibel sein möchtest so dass nicht alle Plugins bei einer Erweiterung/Änderung des Interfaces neu erstellt werden müssen. Wie sehen die Signaturen deiner Interface Methoden aus. Benutzt du dort eigene Typen, sollten diese eventuell in ein Package.

Auch die VCL und jegliche TComponents vertragen sich nicht immer mit Interfaces, da ihr Lifecycle nicht über die Interface Referenzzählung gesteuert wird, sondern über den Owner. Das kann schnell zu AVs führen (TComponent wird über den Owner Mechanismus freigegeben, aber eine Interface Referenz auf diese Komponente ist noch irgendwo vorhanden).

Dass die Interface Referenzzählung nicht mehr greift, wenn man sich überkreuzende Referenzen hat (Parent/Child Relation z.B.), sollte man auch beachten.

Ich selber mag Interfaces sehr gerne, da sie einem ein gutes Stück eine Art GC vorgaukeln, aber man sollte über die Gefahren im Klaren sein und darüber dass in der Theorie immer alles ganz einfach gesagt ist "always code against interfaces" aber in der Praxis nicht immer realisierbar.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat