Главная » Delphi » Delphi 2006 – Шаблон Singleton (Одиночка)

0

Существует немало случаев, когда некоторый класс в программе должен быть представлен единственным экземпляром. Например, в библиотеке Delphi VCL имеется глобальная переменная Application (экземпляр класса TApplication), предоставляющая доступ к системным характеристикам самой программы в процессе выполнения. Очевидно, что экземпляр этого класса может быть только один, а доступ к нему предоставляет глобальная переменная Application. Однако теоретически ничто не мешает разработчику создать новый экземпляр класса TApplication (рис. 7.6).

Рис. 7.6. Шаблон Одиночка в Дизайнере модели

Шаблон Одиночка позволяет создать только один экземпляр класса, а доступ к нему осуществляется через указатель — внутреннее поле Flnstance, к которому можно обращаться через метод Get Instance.

type

TSingleton = claee strict private class var

Flnstance:TSingleton;

constructor Create;

public

class function Getlnstance: TSingleton;

end;

Реализация этого метода прозрачна — в ней обеспечивается постоянная работа с единственным, причем одним и тем же экземпляром данного класса:

class function TSingleton.GetInstance: TSingleton; begin

If FInstance = nil Then begin

FInstance := TSingleton.Create(); end;

Result := FInstance; end;

При этом программист всегда использует только данный метод, не разбираясь, создавался ли предварительно данный экземпляр явно — эта проверка происходит автоматически.

Отметим также, что конструктор скрыт в private-разделе класса TSingleton, чтобы к нему нельзя было получить доступ, а переменная FInstance описана как переменная класса, что допускает абстрактные операции над классом без явного создания объекта. Такая тактика хорошо подходит для реализации данной задачи.

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии