设计模式之单例模式8种实现方式,其七:静态内部类
实现方式:
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种实现方式,其七:静态内部类相关推荐
- 设计模式之单例模式8种实现方式,其五:懒汉式(线程不安全,同步代码块)
实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 4.在公共方法的内部生成实例的代码块加上synchroniz ...
- 设计模式之单例模式8种实现方式,其八:枚举方式
实现方式: package singlePattern;enum Singleton{INSTANCE;public void method(){} } 优缺点说明: 1.这借助JDK1.5中添加的枚 ...
- 设计模式之单例模式8种实现方式,其六:双重检查
实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化,给该静态变量添加volatile关键字,设定instance为共享变量 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在 ...
- 设计模式之单例模式8种实现方式,其一:饿汉式-静态常量饿汉式
实现方式分为3步骤: 1.构造方法私有化 2.类的内部创建对象 3.向外部暴露一个静态的公共方法 实例: package singlePattern;public class SinglePatter ...
- 设计模式之单例模式8种实现方式,其四:懒汉式(线程安全,同步方法)
实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 4.在外部暴露的公共方法上添加synchronized关键字 ...
- 设计模式之单例模式8种实现方式,其三:懒汉式(线程不安全)
实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 案例: package singlePattern;publ ...
- 设计模式之单例模式8种实现方式,其二:饿汉式-静态代码块饿汉式
饿汉式(静态代码块)应用步骤: 1.构造器私有化 2.创建类的静态变量,不实例化 3.静态代码块实例化 4.向外部暴露一个静态的公共方法 案例: package singlePattern;publi ...
- java设计模式之单例模式(七种方法)
单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...
- java单例模式几种实现方式
1.饿汉式(线程安全,调用效率高,但是不能延时加载): public class ImageLoader{ private static ImageLoader instance = new Imag ...
最新文章
- 小蛮机器人如何联网_国际相对论第三期——机器人与物联网的碰撞
- python真的很厉害吗-python为什么这么牛?Python真有这么好的前景?
- 抖音小程序开发:CEO们涌进直播间带货
- Apache Kafka-通过concurrency实现并发消费
- 指针都没搞懂,还能算得上 C++ 老司机?
- Elasticsearch:Elasticsearch基础上构建推荐引擎 资料收集
- k8s mysql重启_kubernetes Pod 应用自动恢复(重启策略 + 健康检查)简介
- java设置默认参数_关于java:如何设置默认方法参数值?
- c语言文件替换字符串,C语言替换字符串
- Photoshop 入门教程,处理图层「2」了解图层基本知识
- 电影图标:杀死比尔(Kil Bill)
- inode客户端 linux,Ubuntu 11.10 H3C iNode 客户端下载及安装图解
- 步进电机正反转实验_三相异步电机正反转控制原理图
- 关于一百天计划的设想(信任的速度读后感)
- Qlik Sense 集合表达式
- 分体式水晶头_六类水晶头的接线方法(分体式安装图解)
- 正则表达式行尾行首添加字符
- Windows To Go常见问题
- 根据微信的code_url 给前端返回二维码图片--转换成base
- MacBook Pro USB口可以识别U盘却不能识别手机?
热门文章
- Java基础学习总结(181)——Nacos、Apollo、Config配置中心如何选型?
- Linux学习总结(53)——后台启动nohup /dev/null 21 使用总结
- python怎么获取redis中的数据_python 获取的redis里的数据怎么处理
- 差分电荷密度 matlab,差分电荷密度
- chararray遍历_数组遍历的三种方法
- 转载 : JSP取得绝对路径
- 您企业的邮件系统够安全吗
- window当mac用,VirtualBox虚拟机安装os系统
- {{jQuery源码分析}}jQuery对象初始化的多种传参数形式
- 【DBA之路】关于连接不上数据库