设计模式-单例模式

单例模式:采用一定的方法保证在整合的软件系统中,对摸个类只能存在一个对象实例,并且该类只提供一个获取其对象实例的方法

使用场景:

  需要频繁的进行创建和销毁的对象,创建对象时耗时过多或者耗费资源过多(重量级对象),但又经常用到的对象,工具类对象,频繁访问数据库或者文件时的对象(数据库,session工厂等)

八种方式:

  1 饿汉式(静态常量)

  2 饿汉式(静态代码块)

  3 懒汉式(线程不安全)

  4 懒汉式(线程安全,同步方法)

  5 懒汉式(线程安全,同步代码块)

  6 双重检查

  7 静态内部类

  8 枚举

1、静态常量饿汉式

  

  优点:写法简单,在类装载是就完成了实例化,避免了线程同步问题。

  缺点:在类装载是就完成实例化,没有达到懒加载的效果,如果该类从未使用,就会造成内存浪费

  总结:这种单例模式,可能会造成内存浪费

2、饿汉式-静态代码块

  

  优点:写法简单,在类装载是就完成了实例化,避免了线程同步问题。

  缺点:在类装载是就完成实例化,没有达到懒加载的效果,如果该类从未使用,就会造成内存浪费

  总结:这种单例模式,可能会造成内存浪费

3、懒汉式-线程不安全

  

 

  优点:能起到懒加载的效果,但是只能再单线程下使用

  缺点:在多线程的情况下,会存在现在不安全的情况

  总结:在实际开发中,会造成现在不安全,不推荐使用

4、懒汉式-线程安全,同步方法

  

 

  优点:解决了线程不安全的问题

  缺点:效率太低了,每个线程在想获取类的实例是都要进行同步

  总结:在实际开发中不推荐这种方式

 5、懒汉式-线程安全,同步代码块

  

 

  优点:相对于前一种进行的改进,提升了效率

  缺点:还是无法保证线程安全问题

  总结:在实际开发中,不能使用这种方式

6、双重检查

  

  优点:解决了线程安全问题,也解决了懒加载问题,效率较高

  总结:在实际开发中,相比推荐

7、静态内部类

  

 

  优点:保证了安全性和唯一性,实现了延迟加载,效率高

  总结:推荐使用

8、枚举

  

 

  优点:可以防止反序列化

  总结:推荐使用

 

jdk中的使用

  Runtime类

  

posted @ 2020-10-26 11:20  一个丶疯子  阅读(73)  评论(0)    收藏  举报