单例模式的特点
- 构造方法私有化
- 实例化的变量引用私有化
- 获取实例的方法公有
常用单例模式
饿汉式
public class Singleton {
/*
* 利用静态变量来记录Singleton的唯一实例
* 直接初始化静态变量,这样就可以确保线程安全了
*/
private static final Singleton uniqueInstance = new Singleton();
/*
* 构造器私有化,只有Singleton类内才可以调用构造器
*/
private Singleton(){
}
public static Singleton getInstance(){
return uniqueInstance;
}
}
懒汉式
public class Singleton {
/*
* 利用静态变量来记录Singleton的唯一实例
* volatile 关键字避免指令重排,防止并发返回一个没构造完全的实例
*
*/
private volatile static