单例模式:一个类,始终仅仅对外提供自己的一个实例,这样的设计方案,就称单例模式。
懒汉模式:
-
构造函数私有
-
声明私有的本类静态实例
-
定义静态的方法,在方法中创建本类实例,并返回该实例
public class Singleton {
// 1.将构造器私有
private Singleton(){}
// 2. 创本类的静态私有实例
private static Singleton singleton;
// 3.对外提供一个公有的 方法 获取本类的实例对象
public static Singleton get(){
if(Objects.isNull(singleton)){ // 判断 本类的静态实例是否为空
singleton = new Singleton();
}
return singleton;
}
}
由于 本类的构造器为私有,所以外界无法直接通过new 关键字来创建本类的实例对象 ,只能通过 本类中提供的对应方法来获取 本类的实例对象, 由于 本类的实例是static来修饰的 类加载结束后,该实例只会在内存中存在一份对象,使得 外部获取本类的实例对象将会是同一份对象
测试
public class Test {
public static void main(String[] args) {
Singleton s1 = Singleton.get();
Singleton s2 = Singleton.get();
/* 判断 s1 和s2 是否为同一份对象*/
System.out.println(s1 == s2);
}
}
运行结果: