单例模式

创建单例模式的两个核心:(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;
    }
}

 

 

 

你可能感兴趣的:(java,java)