Шаблон проектирования Singleton

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

Класс сам контролирует то, что у него есть только один экземпляр, может запретить создание дополнительных экземпляров, перехватывая запросы на создание новых объектов, и он же способен предоставить доступ к своему экземпляру. Это и есть назначение паттерна "одиночка".

Пример реализации паттерна singleton для perl

Класс Singleton:

Обычный класс, просто для контроля:

Скрипт, который использует оба перечисленных класса:

Результаты запуска скрипта:

Можно видеть, что при вызове метода new для класса singleton, в самом деле, объект создается только при первом вызове, а второй и третий раз - просто возвращается ссылка на уже существующий объект.

Пример из жизни

Данный паттерн используется в POE, в коде ядра системы.

Полезные ссылки

wikipedia.org: Singleton_pattern

wikipedia.org: Одиночка_(шаблон_проектирования)