一个类有且只有一个实例,且提供一个全局访问方法来访问这个实例
1、定义该类对象为私有且静态类型
2、该实例类提供私有的构造函数,防止外部类创建该类实例
3、提供一个全局可以访问该类实例的静态方法
/**
* 单例设计模式
*
* @author ZiyaChen
*/
public class Singleton {
// 1、定义该类对象为私有且静态类型
//volatile(易挥发的)关键字修饰的变量对所有的线程可见,是JVM提供的最轻量级同步机制
private static volatile Singleton singleton;
// 2、该实例类提供私有的构造函数,防止外部类创建该类实例
private Singleton() {
}
// 3、提供一个全局可以访问该类实例的静态方法
//双锁检测DCL版本
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
天行健君子以自强不息