实现方式:

1.构造方法私有化

2.创建静态内部类

3.在静态内部类里面创建外面类的final修饰的实例

4.通过静态共有方法去返回创建的实例

代码如下:

package singlePattern;public class SinglePattern7 {private SinglePattern7(){};private static class SingleInstance{private static final SinglePattern7 INSTANCE = new SinglePattern7();}public static SinglePattern7 getInstance(){return SingleInstance.INSTANCE;}
}

特点:

1.这种方式采用了类装载的机制来保证初始化实例时只有一个线程。

2.静态内部类方式在Singleton类被装载时并不会立即实例化,而是在需要实例化的时候,调用了getInstance方法,才会装载SingletonInstance类,从而完成Singleton的实例化。

3.类的静态属性只会在第一次加载类的时候初始化,所以在这里,JVM帮助我们保证了线程的安全性,在类进行初始化时,别的线程是无法进入的。

4.优点:避免了线程不安全,利用静态内部类特点实现延迟加载,效率高

5.结论:推荐使用

设计模式之单例模式8种实现方式,其七:静态内部类相关推荐

  1. 设计模式之单例模式8种实现方式,其五:懒汉式(线程不安全,同步代码块)

    实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 4.在公共方法的内部生成实例的代码块加上synchroniz ...

  2. 设计模式之单例模式8种实现方式,其八:枚举方式

    实现方式: package singlePattern;enum Singleton{INSTANCE;public void method(){} } 优缺点说明: 1.这借助JDK1.5中添加的枚 ...

  3. 设计模式之单例模式8种实现方式,其六:双重检查

    实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化,给该静态变量添加volatile关键字,设定instance为共享变量 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在 ...

  4. 设计模式之单例模式8种实现方式,其一:饿汉式-静态常量饿汉式

    实现方式分为3步骤: 1.构造方法私有化 2.类的内部创建对象 3.向外部暴露一个静态的公共方法 实例: package singlePattern;public class SinglePatter ...

  5. 设计模式之单例模式8种实现方式,其四:懒汉式(线程安全,同步方法)

    实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 4.在外部暴露的公共方法上添加synchronized关键字 ...

  6. 设计模式之单例模式8种实现方式,其三:懒汉式(线程不安全)

    实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 案例: package singlePattern;publ ...

  7. 设计模式之单例模式8种实现方式,其二:饿汉式-静态代码块饿汉式

    饿汉式(静态代码块)应用步骤: 1.构造器私有化 2.创建类的静态变量,不实例化 3.静态代码块实例化 4.向外部暴露一个静态的公共方法 案例: package singlePattern;publi ...

  8. java设计模式之单例模式(七种方法)

    单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...

  9. java单例模式几种实现方式

    1.饿汉式(线程安全,调用效率高,但是不能延时加载): public class ImageLoader{ private static ImageLoader instance = new Imag ...

最新文章

  1. 小蛮机器人如何联网_国际相对论第三期——机器人与物联网的碰撞
  2. python真的很厉害吗-python为什么这么牛?Python真有这么好的前景?
  3. 抖音小程序开发:CEO们涌进直播间带货
  4. Apache Kafka-通过concurrency实现并发消费
  5. 指针都没搞懂,还能算得上 C++ 老司机?
  6. Elasticsearch:Elasticsearch基础上构建推荐引擎 资料收集
  7. k8s mysql重启_kubernetes Pod 应用自动恢复(重启策略 + 健康检查)简介
  8. java设置默认参数_关于java:如何设置默认方法参数值?
  9. c语言文件替换字符串,C语言替换字符串
  10. Photoshop 入门教程,处理图层「2」了解图层基本知识
  11. 电影图标:杀死比尔(Kil Bill)
  12. inode客户端 linux,Ubuntu 11.10 H3C iNode 客户端下载及安装图解
  13. 步进电机正反转实验_三相异步电机正反转控制原理图
  14. 关于一百天计划的设想(信任的速度读后感)
  15. Qlik Sense 集合表达式
  16. 分体式水晶头_六类水晶头的接线方法(分体式安装图解)
  17. 正则表达式行尾行首添加字符
  18. Windows To Go常见问题
  19. 根据微信的code_url 给前端返回二维码图片--转换成base
  20. MacBook Pro USB口可以识别U盘却不能识别手机?

热门文章

  1. Java基础学习总结(181)——Nacos、Apollo、Config配置中心如何选型?
  2. Linux学习总结(53)——后台启动nohup /dev/null 21 使用总结
  3. python怎么获取redis中的数据_python 获取的redis里的数据怎么处理
  4. 差分电荷密度 matlab,差分电荷密度
  5. chararray遍历_数组遍历的三种方法
  6. 转载 : JSP取得绝对路径
  7. 您企业的邮件系统够安全吗
  8. window当mac用,VirtualBox虚拟机安装os系统
  9. {{jQuery源码分析}}jQuery对象初始化的多种传参数形式
  10. 【DBA之路】关于连接不上数据库