在《Spring框架学习总结(理论篇——基础理论)》中我们说到实际开发工作中我们经常使用单例模式来设计对象的生命周期,本篇将就单例模式的实现做出详细讲解。
常用的单例模式大体上分为懒汉式与饿汉式,以及Spring中使用的注册表式三种。
一、懒汉式
懒汉式单利模式下,工具类加载时并不会立刻创建实例,只有需要用到该类的实例时,才会为该类创建实例。下面给出常用的四种懒汉式单例模式的实现。
1.简单懒汉
public class SingletonTest {
private static SingletonTest singletonTest;
public static SingletonTest getInstance() {
if(singletonTest==null) {
singletonTest=new SingletonTest();
}
return singletonTest;
}
}
在实际开发中,为了便于管理,我们常将获取实例的方法统一封装进工具类中,而本文为了方便查看代码,我将获取实例的方法写入本类中,读者朋友测试时可以自行编写工具类,也可以直接将本类当做工具类来理解。
懒汉式单例模式下,首次加载SingletonTest类时,并不会立即创建实例,而是只有通过调用getInstance方法,才会创建该类的实例并返回此实例,每次调用getInstance方法都只会获得同一个实例。
2.加同步锁