单例模式的应用场景,全局创建唯一的对象,比如用在资料管理的方面。
下面来个最严谨的单例模式,代码如下:
public class Singleton {
private static volatile Singleton singleton = null;
private Singleton(){
}
public static Singleton getSingleton(){
if (singleton == null){
synchronized (Singleton.class){ // 尽量避免重复进入同步块
if (singleton == null){ // 同步.class,意味着对同步类方法调用
singleton = new Singleton();
}
}
}
return singleton;
}
}
volatile修饰静态变量,目的是保证Singleton初始化完毕才可以被get到。