【设计模式】——单例
来源:互联网 发布:美国退出qe 知乎 编辑:程序博客网 时间:2024/06/10 18:40
单例模式在实际开发中比较常用,之前接触中只了解懒汉式和饿汉式,而单例的实现一共包含饿汉和懒汉在内一共是5中实现方式,为了一目了然部分实现直接上图片。
1、饿汉式(左侧)
2、懒汉式(右侧)
两者实现的不同,直接反应到使用上:
①饿汉式的实例,在类初始化时直接完成实例化,不支持延时加载,懒汉式相反。
②饿汉式的访问接口没有进行同步控制,所以调用效率高,懒汉式相反。
3、静态内部类
静态内部类结合了饿汉和懒汉的优点:可延时、线程安全、调用效率高。
①可延时:对象的实例化放在了静态内部类中,类在进行初始化时不会执行到静态内部类,只有在调用getInstance()方法时才会执行静态内部类的方法,实现对象的实例化
②内部类的加载过程是天然线程安全的
4、枚举类实现单例
优点:简单、线程安全、调用效率高。
缺点:不能实现延时
5、Double Check
缺点:JVM底层内部模型原因,偶尔会出问题,不建议使用(具体原因不详)。
总结
频繁调用的建议使用调用效率高的,如果创建代价大建议使用可延时的。
不需要延时的:枚举 好于 饿汉
需要延时的:静态内部类 好于 懒汉式
可下载测试代码。(http://download.csdn.net/detail/u013030682/9884459)
阅读全文
0 0
- 设计模式—单例设计模式
- 设计模式—单例
- 设计模式—单例
- 设计模式—单例
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- 设计模式——单例模式
- SpringMVC学习之json数据交互
- kudu踩坑记之一
- webrtc中关于AEC,AGC,NS模块的使用总结
- Leetcode+牛客网—回文串总结(一)
- ssh文件下载与上传细节
- 【设计模式】——单例
- 为什么memset不能将数组元素初始化为1?(急)
- CentOS yum升级GCC到4.8
- MPP 架构数据库
- centos下IntelliJ IDEA运行java项目
- 宿主对象
- Json字符串与Json对象的区别
- Ubuntu常用命令
- 学习Spring Boot第一天之Spring注解式声明和注入Bean