Как создать сиглтон

Синглтон - шаблон проектирования, гарантирующий, что в приложении будет только один экземпляр некоторого класса и предоставляющий глобальную точку доступа к этому классу.

Все классы Delphi - наследники от TObject и все используют функцию класса NewInstance, которая выделяет память для экземпляра объекта. Важно, что этот метод виртуальный, и мы можем иземнить поведение до того, как будет занята память под новый экземпляр.

type
  TSingleton = class
  strict private
    class var
      Instance: TSingleton;
  public
    class function NewInstance: TObject; override;
  end;

class function TSingleton.NewInstance: TObject;
begin
  // Если один экземпляр создан, то новый Create будет возвращать указатель на созданный экземпляр.
  if not Assigned(Instance) then
    Instance := TSingleton(inherited NewInstance);
  Result := Instance;
end;