dimanche 27 janvier 2008

Un singleton en Delphi

Le source suivant présente comment réaliser un objet singleton en Delphi. Lorsque l'on appel le constructeur d'un objet, le compilateur fait un appel à NewInstance pour récupérer un pointeur sur l'objet instancié. Dans le cas présent au premier appel on fait effectivement cet appel. Dans les cas suivant on retourne toujours la même instance.


unit uSingleton;

interface

type

TSingleton=class
public
class function NewInstance: TObject; override;
end;

implementation

var
fSingleton:TSingleton;

{ TSingleton }

class function TSingleton.NewInstance: TObject;
begin
if assigned(fSingleton) then
result:=fSingleton
else
begin
result:=inherited NewInstance;
fSingleton:=TSingleton(result);
end;
end;

end.