Цитата:
Сообщение от 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.
Все.