目录
1、什么是懒汉式?
单例模式的懒汉式指的是程序运行的时候不会主动实例化单例对象,主动用到单例对象时才实例化单例对象。比如我想喝冰可乐,我先买了一箱可乐,然后想喝的时候才拿一瓶放冰箱;如果我开始就把一箱可乐放冰箱,则会浪费冰箱的空间。
2、创建懒汉式关键点;
1)将构造函数用private修饰,防止外界调用从而创建对象;
2)实例化对象为null
3)在getInstance方法中对instance对象做判断,如果为null,则创建对象并返回;如果不为null,则直接将instance对象返回。
3、代码;
public class Singleton {
// 1、将构造函数置为私有,防止外部调用从而创建对象;
private Singleton(){}
// 2、 实例化对象为null
private static Singleton instance = null ;
// 3、提供一个公共静态类方法供外界获取该类对象
public static Singleton getInstance(){
// 如果实例对象为null,则创建对象,如果不为null,则直接返回
if (instance==null){
instance=new Singleton();
}
return instance;
}
}
4、测试;
public class SingletonTest {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
// 引用类型用“==”比较的是对象内存地址,如果指向同一内存地址,则为true
System.out.println(s1==s2);
}
}
测试结果:
可以看出两次s1和s2为同一实例对象。
5、懒汉式改进点.
懒汉式是线程非安全的写法,后边可以将代码改造成线程安全的懒汉式。