Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi observer pattern mit interfaces (https://www.delphipraxis.net/77880-observer-pattern-mit-interfaces.html)

hoika 26. Sep 2006 08:50


observer pattern mit interfaces
 
Hallo,

hat das schon mal jemand gemacht?
Da ich ja letztens mit interfaces böse krachen gegangen bin,
frage ich mal lieber vorher.

Was ist dabei zu beachten?
Das Problem war beim "krachen", dass Delphi ja COM-interfaces
implementiert hat, und die beim Verlassen der Methode
die ganze Klasse zerstören.

Das will ich aber vermeiden ;)

In einem anderen Thread hatte ich was von "multicast-Events" gehört,
unter .net kenne ich die, aber unter Delphi ?

Kann das der Moderator mal unter "Delphi-Allgemeines" verschieben ?


Heiko

Elvis 26. Sep 2006 09:05

Re: observer pattern mit interfaces
 
Zitat:

Zitat von hoika
Was ist dabei zu beachten?
Das Problem war beim "krachen", dass Delphi ja COM-interfaces
implementiert hat, und die beim Verlassen der Methode
die ganze Klasse zerstören.

Das will ich aber vermeiden ;)

Delphi Interfaces haben nunmal Referenzzählung.
Eine Klasse können die nicht zerstören, aber wenn eine Instanz hinter dem Interface einen Referenzzähler von 0 hat wird sie sich selbst zerstören.
Du kannst dir eine eigene Basisklasse bauen, die die Referenzzählung ignoriert.
Aber Interfaces machen in Delphi eigentlich wenig Probleme wenn man sich daran hält Objekt und Interface instanzen nicht zu vermischen: Einmal Interface immer Interface, sonst ist schnell Polen offen. ;)

Sicher wenn man weiß wo man manuell eine Referenz hinzufügen oder entfernen muss geht auch das problemlos, aber weiß es auch der nächste, der mit dem Code arbeitet?

hoika 26. Sep 2006 09:37

Re: observer pattern mit interfaces
 
Hallo,

also bei mir hat der immer die dahinterstehende Klasse mitgelöscht.
Ich werde das mal an einem kleinen Bsp. ausprobieren.

Jaja, sollte man ja immer so machen ;)


Heiko

Elvis 26. Sep 2006 09:39

Re: observer pattern mit interfaces
 
Zitat:

Zitat von hoika
also bei mir hat der immer die dahinterstehende Klasse mitgelöscht.

Nenne mich Erbsenzähler, aber Instanz <> Klasse. ;-)

Phoenix 26. Sep 2006 10:01

Re: observer pattern mit interfaces
 
Zitat:

Zitat von hoika
In einem anderen Thread hatte ich was von "multicast-Events" gehört,
unter .net kenne ich die, aber unter Delphi ?

Da ist es ein wenig mehr Code. Ich hab da mal was gebastelt damals noch mit D5:
http://www.delphipraxis.net/internal...=590858#590858

Der_Unwissende 26. Sep 2006 11:24

Re: observer pattern mit interfaces
 
Zitat:

Zitat von Phoenix
Da ist es ein wenig mehr Code. Ich hab da mal was gebastelt damals noch mit D5:
http://www.delphipraxis.net/internal...=590858#590858

Dazu sollte man dann (imho) auch den Rat schreiben, dass man es bei aktuellen Versionen lieber mit eine TList (statt einem Array) implementieren sollte. Da wird einem dass dass setLength abgenommen (etwas schöner als in der Version) und man hätte auch eine Funktion um einen Zeiger wieder zu löschen.

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 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