Wenn die Klasse nach außen wirklich nicht sichtbar sein soll,
dann kannst du auch ganz böse sein und alles auf einen Record umstellen.
Von diesem kann man garantiert keine Instanz erstellen.
Delphi-Quellcode:
unit SingletonUnit;
interface
type
{T}Singleton =
record
class procedure DoSomething;
end;
implementation
type
TInternalSingleton =
class
constructor Create;
procedure DoSomething;
end;
var FSingle: TInternalSingleton;
constructor TInternalSingleton.Create;
begin
...
end;
procedure TInternalSingleton.DoSomething;
begin
...
end;
class procedure TSingleton.DoSomething;
begin
FSingle.DoSomething;
end;
initialization
FSingle := TSingleton.Create;
finalization
FSingel.Free;
end.
Wobei man hier auch teilweise komplett auf die interne Klasse verzichten könnte.