2022年3月15日 作者 zeroheart

单例模式

这个模式用的比较多,但是一般都是copy,今天稍微复习一下

1.懒汉式与饿汉式的根本区别在与是否在类内方法外创建自己的对象。

2.声明对象都需要私有化,构造方法都要私有化,这样外部才不能通过 new 对象的方式来访问。

3.饿汉式的话是声明并创建对象(因为他饿),懒汉式的话只是声明对象,在调用该类的 getinstance() 方法时才会进行 new 对象。

4.几种写法

4.1双检锁/双重校验锁

public class Singleton {  
    private volatile static Singleton singleton;  
    private Singleton (){}  
    public static Singleton getSingleton() {  
      if (singleton == null) {  
        synchronized (Singleton.class) {  
            if (singleton == null) {  
                singleton = new Singleton();  
            }  
        }  
      }  
      return singleton;  
    }  
}

4.2登记式/静态内部类

public class Singleton {  
    private static class SingletonHolder {  
     private static final Singleton INSTANCE = new Singleton();  
    }  
    private Singleton (){}  
    public static final Singleton getInstance() {  
        return SingletonHolder.INSTANCE;  
    }  
}