Показать сообщение отдельно
  #29  
Старый 14.10.2015, 19:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от mxustin
Если я правильно понял из гугла, то это — определенный паттерн в ООП?.. до такого уровня я еще не дорос.

Ну да. Только надо помнить, что все эти патерны - лишь "научные" названия для вполне себе обычных вещей.
Конкретно, синглтон - это объект, который может существовать только в одном экземпляре (в данном случае в контесте одного процесса). Для его реализации тебе так же потребуетя паттерн Фабрика.

Имплементация элементарна.
Создаешь новый модуль (ну или рефакторишь тот, что у тебя есть ).
Делаешь класс, у которого конструктор находится в секции protected.
Делаешь в секци Implementation переменную для твоего класса, в initialization присввиваешь ей Nil.
Создаешь опубликованную функцию, которая проверяет эту переменную на Nil, если равна, то создает экзепляр, потом возвращает ссылку на эту переменную.

Описывать дольше,чем код писать:
Код:
unit MyRandom;

interface

type
  TMyRandom = class
    ...
  protected
    constructor Create; virtual;
  public
    ...
  end;

function GetMyRandom : TMyRandom;

implementation

var
  MyRandomObj : TMyRandom;

function GetMyRandom : TMyRandom;
begin
  if MyRandomObj = Nil Then MyRandomObj := TMyRandom.Create;
  Result := MyRandomObj;
end;

initialization
  MyRandomObj := Nil;

finalization
  If MyRandomObj <> Nil Then MyRandomObj.Free;

end.
Все.
Ответить с цитированием