Delphi Singleton Pattern [fechado]

Eu sei que isso é discutido muitas vezes em todos os lugares da comunidade, mas não consigo encontrar uma implementação simples e agradável de um padrão Singleton em Delphi. Eu tenho um exemplo em c #:

public sealed class Singleton {
  // Private Constructor
  Singleton( ) { }

  // Private object instantiated with private constructor
  static readonly Singleton instance = new Singleton( );

  // Public static property to get the object
  public static Singleton UniqueInstance {
    get { return instance;}
}

Eu sei que não existe uma solução tão elegante quanto essa no Delphi e vi muita discussão sobre não poder ocultar corretamente o construtor no Delphi (torná-lo privado), portanto, precisaríamos substituir os métodos NewInstance e FreeInstrance. Algo nesse sentido, acredito, é a implementação que encontrei nohttp: //ibeblog.com/? p = 65:

type
TTestClass = class
private
  class var FInstance: TTestClass;
public                              
  class function GetInstance: TTestClass;
  class destructor DestroyClass;
end;

{ TTestClass }
class destructor TTestClass.DestroyClass;
begin
  if Assigned(FInstance) then
  FInstance.Free;
end;

class function TTestClass.GetInstance: TTestClass;
begin
  if not Assigned(FInstance) then
  FInstance := TTestClass.Create;
  Result := FInstance;
end;

Qual seria sua sugestão em relação ao padrão Singleton? Pode ser simples, elegante e seguro para threads?

Obrigado

questionAnswers(6)

yourAnswerToTheQuestion