Шаблон Delphi Singleton [closed]

Я знаю, что это много раз обсуждается в сообществе, но я просто не могу найти красивую и простую реализацию шаблона Singleton в Delphi. У меня есть пример на 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;}
}

Я знаю, что нет более элегантного решения, чем это в Delphi, и я видел много дискуссий о невозможности правильно скрыть конструктор в Delphi (сделать его закрытым), поэтому нам нужно переопределить методы NewInstance и FreeInstrance. Что-то в этом роде, как мне кажется, является реализацией, которую я нашел на http://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;

Что бы вы посоветовали относительно паттерна Singleton? Может ли это быть простым, элегантным и потокобезопасным?

Спасибо.

22
задан elector 22 March 2011 в 13:34
поделиться