Что такое синглтон?

Давайте начнем с простого определения Singleton Design Pattern.

Этот простейший и осмысленный шаблон проектирования относится к категории Creational Design Pattern. В этом шаблоне проектирования один класс отвечает за создание только одного экземпляра за раз.

Что это значит? Какая польза от этого шаблона проектирования?

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

Поясним это на примере.

Предположим, нам нужно создать класс учащихся, который получает данные о студентах в качестве пользовательского ввода и распечатывает эти данные о студентах, когда это необходимо. В следующем примере ясно показано, как реализовать следующий сценарий с использованием шаблона проектирования Singleton. Существует две формы этого шаблона проектирования. Одним из них является Lazy Instantiation, который отвечает за создание экземпляра при необходимости. (Я использовал Lazy Instantiation, чтобы объяснить этот шаблон проектирования на простом примере). И еще один — Eager Instantiation, который отвечает за создание экземпляра во время загрузки.

Из приведенного выше сегмента кода мы создаем класс Student и делаем его конструктор закрытым. Затем создайте статический экземпляр (obj) самого себя.

Затем мы создаем статический метод (getInstance), чтобы получить экземпляр этого класса, на который будут ссылаться другие классы. Внутри этого метода getInstance вы можете видеть, что сначала он проверяет, создан ли экземпляр или нет (или экземпляр имеет значение null), затем, если он равен нулю или не создан, мы делаем этот класс синхронизированным или блокируем класс один раз, а затем проверяем снова если экземпляр создан или нет (или экземпляр нулевой). Если мы снова получим результат как нулевой или не созданный, мы создадим новый экземпляр. Этот специальный метод называется «Блокировка с двойной проверкой». Затем мы создадим основной класс как Singleton, чтобы ссылаться на этот класс Student и его методы. Следующий сегмент кода ясно объясняет, как выполнить эту задачу.

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

Если вы внимательно проверите приведенный выше результат, тот, который я выделил красным цветом, вы увидите, что экземпляр создается один раз. (Чтобы проверить это, я напечатал «Экземпляр создан» внутри частного конструктора класса Student). Поэтому, если мы попытаемся создать экземпляр класса Student более одного раза (из приведенного выше примера класса Singleton я попытался создать экземпляр класса Student более одного раза как student и student1), он создаст экземпляр один раз, и на этот экземпляр ссылаются более одного раза. Затем я использовал метод setStudentDetails, чтобы вручную вставить данные об ученике, а затем вставленные данные можно просмотреть с помощью метода getStudentCGPA.

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

Дополнительные ссылки:





Это все на данный момент. Не стесняйтесь комментировать, если у вас есть какие-либо сомнения или если что-то добавить.