懒汉式(静态内部类)
//懒汉式(静态内部类)
//这种写法,即解决安全问题,又解决了性能问题
//这个戴拿,没有浪费一个字
public class Singleton4 {
//1.先声明一个静态内部类
//private 私有的保证别人不能修改
//static 全局唯一
//这里其实不会实例化LasyHolder,因为这里是调用的LasyHolder的属性, 没有new LasyHolder( ),也不需要创建LasyHolder对象
//!!静态内部类,只有使用它的时候才加载
//(静态内部类只有当被外部类调用到的时候才会初始化。 )
//加载一个类时,其内部类不会同时被加载。一个类被加载,当且仅当其某个静态成员(静态域、构造器、静态方法等)被调用时发生。
private static class LasyHolder{
//final 为了防止内部误操作,防止代理模式,cglib的代理模式
private static final Singleton4 INSTANCE = new Singleton4();
}
//2.将默认构造方法私有化
private Singleton4(){}
//3.同样提供静态方法获取实例
//final 确保别人不能覆盖
public static final Singleton4 getInstance(){
return LasyHolder.INSTANCE;
}
}