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