AGB  ·  Datenschutz  ·  Impressum  







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

Statische Objekte

Ein Thema von hpf · begonnen am 5. Nov 2004 · letzter Beitrag vom 5. Nov 2004
Antwort Antwort
Benutzerbild von Sanchez
Sanchez

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

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
Antwort Antwort


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:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz