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