Одиночка (шаблон проектирования)

Название одиночка
Английское название singleton
Диаграмма
Тип порождающий
Назначение гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа
Применяется в случаях  
  • должен быть ровно один экземпляр некоторого класса, легко доступный всем клиентам;
  • единственный экземпляр должен расширяться путем порождения подклассов, и клиентам нужно иметь возможность работать с расширенным экземпляром без модификации своего кода
Плюсы  
  • контролируемый доступ к единственному экземпляру;
  • уменьшение числа имён;
  • допускает уточнение операций и представления;
  • допускает переменное число экземпляров;
  • большая гибкость, чем у операций класса.
Родственные шаблоны абстрактная фабрика, строитель, прототип

Пример реализации

Возможная реализация на C++ (известная как синглтон Мейера), где одиночка представляет собой статический локальный объект (важно: это решение не потоко-безопасно и приводится только для того, чтобы показать как устроен шаблон, а не для реального использования в крупномасштабных программных проектах).

template<typename T> class Singleton
{
 
  public:
    static T& Instance()
    {
        static T theSingleInstance; // у класса T есть конструктор по умолчанию
        return theSingleInstance;
    }
};
 
class OnlyOne : public Singleton<OnlyOne>
{
    //.. интерфейс класса
};

Ссылки


порождающие шаблоны проектирования
абстрактная фабрика | строитель | фабричный метод | прототип | одиночка | ленивая инициализация


шаблоны проектирования
порождающие шаблоны | шаблоны поведения | структурные шаблоны | шаблоны параллельного программирования
 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home