创建单例模式的两个核心:(1)私有化构造函数 (2)提供统一对外返回该类对象实例的方法
懒汉模式:
// 懒汉模式:
public class SingletonDemo {
private static SingletonDemo instance;
private SingletonDemo(){
}
public static SingletonDemo getInstance(){
if(instance==null){
instance=new SingletonDemo();
}
return instance;
}
}
// 如上,通过提供一个静态的对象instance,
// 利用private权限的构造方法和getInstance()方法来给予访问者一个单例。
双重校验 【多线程的情况】
// 双重校验
public class Singleton {
private volatile static Singleton instance = null;
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}