Thema: Delphi Observer:

Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.014 Beiträge
 
Delphi 12 Athens
 
#7

AW: Observer:

  Alt 21. Jul 2010, 10:49
So, wie du es machst, steckst du in einem Dilemma: um der Interface-Referenzzählung zu genügen, solltest du nur Interfaces als Instanz-Variablen haben, aber ein ISubject hat leider nicht die Methoden und Eigenschaften eines TWetterDaten, was die Manipulation einer Interface-Instanz verhindert.

Ausweg 1: Du deklarierst zu jeder Klasse ein passendes Interface, das von ISubject abgeleitet ist. => Viel Schreiberei und meher Aufwand bei Änderungen, aber sauber bezüglich Referenzzählung.

Ausweg 2: Du leitest statt von TInterfacedObject von TInterfacedPersistent ab. Damit umgehst due die Referenzzählung und kannst wieder Instanzen der Klassen (statt der Interfaces) verwenden. Du musst aber selber dafür sorgen, daß die Instanzen in der richtigen Reihenfolge freigegeben werden, aber das sollte einem Delphianer ja nicht fremd sein.

Da TInterfaceList von TInterfacedObject abgeleitet ist, musst du auch eine IInterfaceList-Instanz verwalten, sonst kracht es irgendwann. Also FLstBeobachter als IInterfaceList deklarieren!
Uwe Raabe
  Mit Zitat antworten Zitat