单例模式
单例模式:一个类只创建一个实例。
应用场景:
- 避免对象创建耗时较长(数据库连接池)
- 避免资源竞争
- 没有必要的内存开销
# 饿汉式
在类加载时创建对象
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return INSTANCE;
}
public void sayHi() {
System.out.println("hi");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 静态内部类 - 懒汉式
第一次使用时加载
public class LazySingleton {
private LazySingleton() {
}
private static class Hold {
public static LazySingleton INSTANCE = new LazySingleton();
}
public static LazySingleton getInstance() {
return Hold.INSTANCE;
}
public void sayHi() {
System.out.println("hi");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 枚举 - 懒加载
public enum EnumSingleton {
INSTANCE;
public EnumSingleton getInstance() {
return INSTANCE;
}
public void sayHi() {
System.out.println("hi");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Last Updated: 2024/04/23, 01:30:37