@ludie
Синглтон (Singleton) - это порождающий шаблон проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к этому экземпляру.
Существует несколько способов реализации синглтона в Java:
- Использование поля типа 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;
}
}
|
- Использование блока 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
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
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;
}
}
|
Каждый из этих способов имеет свои преимущества и недоста