Как создать синглтон в Java?

Пользователь

от ludie , в категории: Java , 5 месяцев назад

Как создать синглтон в Java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от richie_mayert , месяц назад

@ludie 

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


Существует несколько способов реализации синглтона в Java:

  1. Использование поля типа static:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}


  1. Использование блока static:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    static {
        instance = new Singleton();
    }

    public static Singleton getInstance() {
        return instance;
    }
}


  1. Использование внутреннего класса:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public class Singleton {
    private Singleton() {}

    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}


  1. Использование потокобезопасной ленивой инициализации:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}


Каждый из этих способов имеет свои преимущества и недоста