Da du Delphi XE hast, geht das noch sehr viel besser:
Delphi-Quellcode:
type
TSingleton = class
private
class var
FInstance: TSingleton;
FTest1: Integer;
FTest2: Integer;
FTest3: Integer;
class function GetInstance: TSingleton; static;
public
class destructor Destroy;
class property Instance: TSingleton;
end;
[...]
class function GetInstance: TSingleton;
begin
if not Assigned(FInstance) then
FInstance := TSingleton.Create;
Result := FInstance;
end;
class destructor Destroy;
begin
if Assigned(FInstance) then
FInstance.Free;
end;
So brauchst du dich weder um die Erzeugung noch um die Freigabe kümmern. Und das ist bei einem Singleton finde ich sehr wichtig. Alternativ bietet sich für den Zweck die Verwendung von Interfaces an.