您当前的位置: 首页 >  慌途L

单例模式 | 通过静态内部类实现

慌途L 发布时间:2021-05-21 10:11:12 ,浏览量:2

实现单例模式主要考虑以下三点:
  • 1.是否线程安全
  • 2.是否懒加载
  • 3.能否通过反射破坏(枚举类型不能反射)

一般的单例模式都符合前面两点,线程安全和懒加载;但是都可以通过反射破坏,不过反射一般是人为的操作,可以避免。如果想要不被反射,可以使用枚举类型,但是枚举类型会在程序一启动就会加载,不能懒加载。

单例模式通常由饱汉式和饿汉式,双检式,还有一个模式可以通过静态内部类实现 静态内部类写法

优点:

  • 静态内部类是你第一次调用的时候才实例化,而静态代码块,在程序启动加载时就实例化了
  • 相比之下节省了内存
/**
 * 内部类,只要没有被使用,就不会初始化,Singleton的实例就不会创建
 * 在第一次有人调用getInstance方法的时候,内部类会初始化,创建一个Singleton的实例
 * 类静态初始化的过程一定只会执行一次
 */
public class LazySingleton {

	private static class InnerHolder {
        private static final LazySingleton INSTANCE = new LazySingleton();
    }

    private LazySingleton() {}

    public static LazySingleton getInstance() {
        return InnerHolder.INSTANCE;
    }
}
关注
打赏
1688896170
查看更多评论

慌途L

暂无认证

  • 2浏览

    0关注

    118博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0462s