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