2022年3月15日
单例模式
这个模式用的比较多,但是一般都是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;
}
}