Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

AW: Problem mit Objektfreigabe

  Alt 30. Mär 2011, 13:02
Also es handelt sich hier um das Singleton Design Pattern.
Delphi-Quellcode:
implementation
var
  _Muster:TMuster; // nicht sichtbar ausserhalb der Unit

class function TMuster.SingleInstance: TMuster;
begin
   if not Assigned(_Muster) then
      _Muster := TMuster.Create;
   Result := _Muster;
end;

initialization

finalization
   FreeAndNil(_Muster);
Durch die Verwendung der Klassenfunktion SingleInstance wird klar, dass es sich hier um ein Singleton handelt.
Später wird die Klasse so verwendet:
Delphi-Quellcode:
procedure Beispiel;
var
  m : TMuster;
begin
  m := TMuster.SingleInstance;
  m.irgendwas := ...;

  // wichtig: NICHT m.Free aufrufen !
end;
Alternativ geht das auch mit With:
Delphi-Quellcode:
with TMuster.SingleInstance do
begin
  irgendwas := ...;
Die Lösung mit einer globalen Funktion wie im Vorgängerbeitrag ist auch korrekt,
aber ich denke, dass meine Lösung es noch besser auf den Punkt bringt.
Andreas
  Mit Zitat antworten Zitat