Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

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

Назначение

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

Применимость

Используйте паттерн одиночка, когда:

  • должен быть ровно один экземпляр некоторого класса, легко доступный всем клиентам;
  • единственный экземпляр должен расширяться путем порождения подклассов, и клиентам нужно иметь возможность работать с расширенным экземпляром без модификации своего кода

Структура

 

Участники

  • Singleton - одиночка:
    • определяет операцию getInstance(), которая позволяет клиентам получать доступ к единственному экземпляру;
    • может нести ответственность за создание собственного уникального экземпляра.

Результаты

  • контролируемый доступ к единственному экземпляру. Поскольку класс Singleton инкапсулирует свой единственный экземпляр, он полностью контролирует то, как и когда клиенты получают доступ к нему;
  • уменьшение числа имен. Паттерн одиночка - шаг вперед по сравнению с глобальными переменными.
  • допускает уточнение операций и представления. От класс Singleton можно порождать подклассы, а приложение легко сконфигурировать экземпляром расширенного класса. Можно конкретизировать приложение экземпляром того класса, который необходим во время выполнения.