记录重点
在程序编写上,一般将单例模式分为两种:
饿汉式:在类加载完成时就完成了初始化,所以类加载比较慢,但获取对象的速度块。
懒汉式:在类加载时不初始化。等到第一次使用时才初始化。
饿汉:
public class Singleton{
private Singleton(){}
private final static Singleton INSTANCE = new SingLeton();
public static Signleton getInstance(){
return INStANCE;
}
}
静态内部类(可用,推荐)
public class Singleton {
private Singleton() {}
private static final SingletonInstance(){
private static final Singleton INSTANCE = new Singletion();
}
public static Singleton getInstance(){
return SingletonInstance.INSTANCE ;
}
}
这是很多开发者推荐的一种写法,这种静态内部类方式在Singleton类被装载时并不会立即实例化,而是在需要实例化时,调用getInstance方法,才会装载SingletonInstance类,从而完成对象的实例化。
同时,因为类的静态属性只会在第一次加载类的时候初始化,也就保证了SingletonInstance中的对象只会被实例化一次,并且这个过程也是线程安全的。
感谢:鄙人薛某