Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Fragen zum Singelton Entwurfsmuster

  Alt 28. Jul 2007, 17:29
Hallo Thomas,

unabhängig vom singleton pattern und auch ohne dass ich Delphi 2006 kenne:

(1) class var signalisiert offensichtlich ein sogenanntes Klassenfeld, class function kennzeichnet eine Methode, die du wie auch den Konstruktor mit dem Klassennamen aufrufst, d.h. du musst nicht erst eine Instanz der Klasse bilden.

(2) GetInstance() kommt ohne static aus, weil nicht auf eine Klasseneigenschaft zugegriffen wird, sonder direkt auf ein Klassenfeld.

(3) Die Klasse samt ihren Klassenfeldern kannst du nicht freigeben. Ein Objekt dieser Klasse kannst du mit Free() freigeben. Der Übersetzer hält dich nicht davon ab, dass du den freigegebenen Objektzeiger weiter verwendest, aber das Ergebnis zur Laufzeit kann unterschiedlich ausfallen, jenachdem ob der ursprünglich belegte Speicher noch den alten Inhalt aufweist oder nicht. Mit FreeAndNil(obj) anstelle von obj.Free kannst du einen solchen Objektzeiger (von Dijkstra einmal dangling pointer genannt) zurücksetzen, so dass zumindest die Laufzeitfehlermeldung aussagekräftiger wird.

Grüße vom marabu
  Mit Zitat antworten Zitat