设计模式-单例模式
单例模式:采用一定的方法保证在整合的软件系统中,对摸个类只能存在一个对象实例,并且该类只提供一个获取其对象实例的方法
使用场景:
需要频繁的进行创建和销毁的对象,创建对象时耗时过多或者耗费资源过多(重量级对象),但又经常用到的对象,工具类对象,频繁访问数据库或者文件时的对象(数据库,session工厂等)
八种方式:
1 饿汉式(静态常量)
2 饿汉式(静态代码块)
3 懒汉式(线程不安全)
4 懒汉式(线程安全,同步方法)
5 懒汉式(线程安全,同步代码块)
6 双重检查
7 静态内部类
8 枚举
1、静态常量饿汉式

优点:写法简单,在类装载是就完成了实例化,避免了线程同步问题。
缺点:在类装载是就完成实例化,没有达到懒加载的效果,如果该类从未使用,就会造成内存浪费
总结:这种单例模式,可能会造成内存浪费
2、饿汉式-静态代码块

优点:写法简单,在类装载是就完成了实例化,避免了线程同步问题。
缺点:在类装载是就完成实例化,没有达到懒加载的效果,如果该类从未使用,就会造成内存浪费
总结:这种单例模式,可能会造成内存浪费
3、懒汉式-线程不安全

优点:能起到懒加载的效果,但是只能再单线程下使用
缺点:在多线程的情况下,会存在现在不安全的情况
总结:在实际开发中,会造成现在不安全,不推荐使用
4、懒汉式-线程安全,同步方法

优点:解决了线程不安全的问题
缺点:效率太低了,每个线程在想获取类的实例是都要进行同步
总结:在实际开发中不推荐这种方式
5、懒汉式-线程安全,同步代码块

优点:相对于前一种进行的改进,提升了效率
缺点:还是无法保证线程安全问题
总结:在实际开发中,不能使用这种方式
6、双重检查

优点:解决了线程安全问题,也解决了懒加载问题,效率较高
总结:在实际开发中,相比推荐
7、静态内部类

优点:保证了安全性和唯一性,实现了延迟加载,效率高
总结:推荐使用
8、枚举

优点:可以防止反序列化
总结:推荐使用
jdk中的使用
Runtime类


浙公网安备 33010602011771号