单例模式

一.什么是单例模式?

  定义:确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例java

二.类图以下:

  

三.类图解析

  Singleton类称为单例类,经过使用private的构造函数确保了在一个应用中只产生一个实例,而且是自行实例化的数据库

四.单例模式的优势

  因为单例模式在内存中只有一个实例,减小了内存开支,特别是一个对象频繁的建立、销毁时,而且建立或销毁时性能没法优化,单例模式的优点就很是明显了安全

五.单例模式的缺点

  单例模式通常没有接口,扩展很困难。另外单例模式与单一职责原则有冲突,一个类应该只实现一个逻辑,而不关心它是不是单例的并发

六.单例模式的应用场景

  1.要求生成惟一序列号的环境函数

  2.在项目中须要一个共享访问点或共享数据时,如一个Web页面上的计数器,能够不用把每次刷新都记录到数据库中,使用单例模式保持计数器的值,并确保是线程安全的高并发

  3.建立一个对象须要消耗过多资源,如要访问IO和数据库等资源性能

  4.须要定义大量的静态常量和静态方法的环境,能够采用单例模式优化

七.单例模式的注意事项

  1.注意单例模式的线程安全的问题,尤为是在高并发的状况下线程

  2.要考虑对象的复制状况。在java中对象默认是不能够被复制的,若实现了Cloneable接口,并实现了clone方法,则是能够经过对象复制方式建立一个新对象,对象复制是不须要调用类的构造函数,所以即便是私有的构造函数,对象仍然能够被复制对象

八.Spring对单例模式的应用

  在Spring中,每一个Bean默认都是单例的,这样的优势是Spring容器能够管理Bean的生命周期,决定何时建立,何时销毁,销毁的时候须要作什么处理等等

相关文章
相关标签/搜索