单例模式

单例模式的作用
    保证一个类只有一个实例,并且提供访问该实例的全局访问方法。
为什么要用单例模式
    1:为了性能考虑。
    2:在整个程序空间使用全局变量,共享资源。
几种实现方法:
    懒汉式,饿汉式,静态内部类实现 ,枚举实现。(除了)
饿汉式:
// 饿汉式可以在多线程中保证单例
public class Persion{
    // 持有局部,静态,常量本类实例。
    private  static final Persion persion = new Persionz();  // 私有,静态,常量
    // 私有化构造函数
    private Persion();
    // 提供全局,静态的获取实例的方法
    public static Persion getPersion(){
        return persion;
    }
}

懒汉式:
// 懒汉式在多线程中不能保证单例
public class Persion{
    private static Persion persion = null;  // 私有,静态
    private Persion();
    public static Persion getPersion(){
        if(persion == null){
            persion = new Persion();
            return persion;
        }else{
            return persion;
        }
    }
}
懒汉式的双重检查:
// 保证多线程情况下保证单例
public class Persion{
    private static Persion persion = null;  // 私有,静态
    private Persion();
    public static Persion getPersion(){
        // 懒汉式的双重检测锁
        if(persion == null){
            synchronized(Persion.class){
                    if(persion == null){
                        persion = new Persion();
                    }
            }
        }
        return persion;
    }
}
# 反射入侵:
    
原文地址:https://www.cnblogs.com/Xmingzi/p/12601273.html