Идея паттерна проектирования Одиночка (Singleton)

Паттерн (шаблон) проектирования — это продуманный способ построения исходного кода программы для решения часто возникающих в повседневном программировании проблем проектирования. Иными словами, это уже придуманное решения, для типичной задачи. При этом паттерн не готовое решение, а просто алгоритм действий, который должен привести к желаемому результату. Давайте рассмотрим один из наиболее простых паттернов — Singleton (Одиночка).

Существует три вида паттернов проектирования:

  • Порождающие паттерны позволяют возможность выполнять инициализацию объектов наиболее удобным и оптимальным способом.
  • Структурные паттерны описывают взаимоотношения между различными классами или объектами, позволяя им совместно реализовывать поставленную задачу.
  • Поведенческие  паттерны позволяют грамотно организовать связь между сущностями для оптимизации и упрощения их взаимодействия.

Singleton (Одиночка) — это порождающий паттерн, гарантирующий, что для класса будет создан только один единственный экземпляр. То есть, при обращении к классу будет создан уникальный в рамках программы объект, защищенный от возможности создания подобных себе объектов,  предоставляющий глобальную точку доступа к этому экземпляру. При этом объект будет создаваться только при необходимости, когда к нему будет выполняться обращение.

Архитектура паттерна Одиночка (Singleton)

На рисунке представлена схема структуры класса.

Singleton (Одиночка)

Singleton (Одиночка)

  • Singleton — уникальный статический экземпляр класса
  • getInstance() — метод получения экземпляра класса. Если экземпляр еще не создан, то создает новый.

Логика работы паттерна Singleton (Одиночка)

  1. Добавим в класс закрытое статическое поле, в котором будет находиться основной уникальный экземпляр класса
  2. Создадим статичный метод, используемый для получения уникального экземпляра класса
  3. Реализуем создание уникального экземпляра при первом обращении к нему (так называемая «ленивая инициализация»)
  4. Добавим закрытий конструктор класса
  5. Вызовем создание экземпляра класса с помощью статичного метода

Реализация паттерна проектирования Singleton (Одиночка) на языке C#

Singleton.cs

Вызов класса. Попытаемся создать несколько экземпляров класса одиночки.

Program.cs

В результате получим следующий результат:

Singleton result

Singleton result

Как мы видим, при попытке создания нескольких экземпляров класса, мы получаем один единственный уникальный экземпляр класса, с единой точкой входа и реализующий механизм поздней инициализации. Таким образом, мы полностью добились желаемого результата. Исходный код программы доступен по ссылке в репозитории https://github.com/shwanoff/Singleton

P.S. Присоединяйся в любой удобной для тебя социальной сети. Для меня очень важно оставаться с тобой на связи, ведь у меня есть еще много полезной информации о программировании для тебя, которой я хочу с тобой поделиться.
[DISPLAY_ULTIMATE_PLUS]

%d такие блоггеры, как: