Паттерн Одиночка гарантирует, что класс имеет только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
Плюсы
Минусы
public class Singleton { private static Singleton instance; private Singleton(){} public static Singleton getInstance() { if(instance == null) { instance = new Singleton(); } return instance; } //Другие методы }
public class Main { public static void main(String[] args) { Singleton sing = Singleton.getInstance(); } }
Существует проблема использования паттерна одиночки в много поточном программировании а именно это когда в каждом потоке свой экземпляр объекта Singleton.
Решаем проблемы многоточечного доступа
public class Singleton { private volatile static Singleton instance; private Singleton(){} public static Singleton getInstance() { if(instance == null) { synchronized (Singleton.class) { if(instance == null) { instance = new Singleton(); } } } return instance; } //Другие методы }
Таким образом мы увеличим производительность кода в десятки раз нежели если мы в целый метод getInstance поместили synchronized.