Широко используемый шаблон проектирования в OOPS

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

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

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

Шаблон проектирования ограничивает создание экземпляра класса только одним объектом

Реализация шаблона Singleton в основном включает в себя эти шаги, которые одинаковы для всех типов шаблона Singleton.

1. Создание закрытого конструктора, который предотвращает создание экземпляра класса извне.

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

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

Паттерн Singleton имеет в основном два типа:

Шаблон ленивого синглтона

  • Объект не создается до тех пор, пока не появится спрос (Объект по требованию).
  • Условие if-else используется для проверки
  • Данный шаблон рекомендуется к реализации
package com.mayank.item; 
 
public class ItemOperations { 
 
 //PRIVATE INSTANCE VARIABLE 
 private static ItemOperations itemOperations = null; 
  
 //PRIVATE CONSTRUCTOR 
 private ItemOperations() {} 
  
 //GLOBAL STATIC METHOD 
 public static ItemOperations getInstance() { 
 
 //LAZY SINGLETON
  if(itemOperations == null) { 
   itemOperations = new ItemOperations();
  } 
  return itemOperations;
 }   
} 

Шаблон «Стремительный синглтон»

  • Объект заранее создается и загружается в память. (Объект прежде требования)
  • Никакое условие не используется.
  • Не рекомендуется в большинстве случаев, поскольку экземпляр создается еще до его использования.
package com.mayank.item; 
 
public class ItemOperations { 
 
 //PRIVATE INSTANCE VARIABLE 
 private static final ItemOperations itemOperations = new ItemOperations(); 
  
 //PRIVATE CONSTRUCTOR 
 private ItemOperations() {} 
     
 //GLOBAL STATIC METHOD 
 public static ItemOperations getInstance() { 
 
   //EAGER SINGLETON  
   return itemOperations;   
  } 
}