Thema: Delphi Statische Objekte

Einzelnen Beitrag anzeigen

Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#7

Re: Statische Objekte

  Alt 5. Nov 2004, 09:53
Hallo,
Ein Singleton-Pattern lässt sich in Delphi durchaus mit hilfe von statischen Methoden und typisierten Konstanten realisieren.

Und so sieht ein Singleton aus, wenn ich ihn mir vom Modelmaker generieren lasse:
Delphi-Quellcode:
type
  TTest = class(TObject)
  protected
    constructor CreateInstance;
    class function AccessInstance(Request: Integer): TTest;
  public
    constructor Create;
    destructor Destroy; override;
    class function Instance: TTest;
    class procedure ReleaseInstance;
  end;

constructor TTest.Create;
begin
  inherited Create;
  raise Exception.CreateFmt('Access class %s through Instance only', [ClassName]);
end;

constructor TTest.CreateInstance;
begin
  inherited Create;
end;

destructor TTest.Destroy;
begin
  if AccessInstance(0) = Self then AccessInstance(2);
  inherited Destroy;
end;

class function TTest.AccessInstance(Request: Integer): TTest;
  
  {$J+}
  const FInstance: TTest = nil;
  {$J-}
  
begin
  case Request of
    0 : ;
    1 : if not Assigned(FInstance) then FInstance := CreateInstance;
    2 : FInstance := nil;
  else
    raise Exception.CreateFmt('Illegal request %d in AccessInstance', [Request]);
  end;
  Result := FInstance;
end;

class function TTest.Instance: TTest;
begin
  Result := AccessInstance(1);
end;

class procedure TTest.ReleaseInstance;
begin
  AccessInstance(0).Free;
end;
grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat