Паттерн (шаблон) проектирования — это продуманный способ построения исходного кода программы для решения часто возникающих в повседневном программировании проблем проектирования. Иными словами, это уже придуманное решения, для типичной задачи. При этом паттерн не готовое решение, а просто алгоритм действий, который должен привести к желаемому результату. Давайте рассмотрим один из наиболее простых паттернов — Singleton (Одиночка).
Существует три вида паттернов проектирования:
- Порождающие паттерны позволяют возможность выполнять инициализацию объектов наиболее удобным и оптимальным способом.
- Структурные паттерны описывают взаимоотношения между различными классами или объектами, позволяя им совместно реализовывать поставленную задачу.
- Поведенческие паттерны позволяют грамотно организовать связь между сущностями для оптимизации и упрощения их взаимодействия.
Singleton (Одиночка) — это порождающий паттерн, гарантирующий, что для класса будет создан только один единственный экземпляр. То есть, при обращении к классу будет создан уникальный в рамках программы объект, защищенный от возможности создания подобных себе объектов, предоставляющий глобальную точку доступа к этому экземпляру. При этом объект будет создаваться только при необходимости, когда к нему будет выполняться обращение.
На рисунке представлена схема структуры класса.
Рассмотрим обобщенное описание логики создания класса Singleton (Одиночка):
- Добавим в класс закрытое статическое поле, в котором будет находиться основной уникальный экземпляр класса
- Создадим статичный метод, используемый для получения уникального экземпляра класса
- Реализуем создание уникального экземпляра при первом обращении к нему (так называемая «ленивая инициализация»)
- Добавим закрытий конструктор класса
- Вызовем создание экземпляра класса с помощью статичного метода
Детали реализации программного кода на языке C# описаны в статье https://shwanoff.ru/singleton/