AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Observer:

Ein Thema von GroHae · begonnen am 21. Jul 2010 · letzter Beitrag vom 21. Jul 2010
 
Benutzerbild von Uwe Raabe
Uwe Raabe

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

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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz