单例模式
# 单例模式
- 饿汉式
- 懒汉式
# 饿汉式
思想:
- 创建类的私有构造器
- 创建类的私有对象属性
- 创建类的公开获取方法
public class SingletonClass {
private static SingletonClass sc = new SingletonClass();
private SingletonClass(){
}
public static SingletonClass getInstance(){
return sc;
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 区别
由于Static关键词的特性,饿汉式会在类加载时被调用生成一个单例,如
public class SingletonClass {
private static SingletonClass sc = new SingletonClass();
public static int num = 10;
private SingletonClass(){
System.out.println("called...");
}
public static SingletonClass getInstance(){
return sc;
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
当用户只是调用SingletonClass.num
时,单例也会被生成,但由于一直不用,会导致占用内存空间,因此对于需要消耗庞大资源构建的单例而言,饿汉式是多余的。
饿汉式不存在线程安全问题,懒汉式存在线程安全问题
← Main函数与代码块 介绍→