单件/单例模式
定义
单件模式确保一个类只有一个实例,并提供一个全局访问点。即该类对象在内存中只有一个。
例如:计算机系统中的任务管理器、还有 Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程序的日志对象、数据库的连接池、网站的计数器、Web 应用的配置对象、应用程序中的对话框、系统中的缓存等常常被设计成单件。
单件模式在现实生活中的应用也非常广泛,例如公司 CEO、部门经理等都属于单件模型。
单件模式两种类型:
1.懒汉式:在真正需要使用到对象时才去创建单例类对象
2.饿汉式,在类加载时就去创建单例类对象
UML类图
uniqueInstance:该成员变量持有唯一的Singleton实例
Singleton:私有构造器,保证其他地方不能通过new得到一个Singleton实例对象
getInstance:一个全局访问点。通过这个公共的静态方法可以得到唯一的Singleton实例
使用场景
1.需要频繁创建的一些类,使用单例可以降低系统的内存压力,减少 Gtrea 5rfv5’ ]/ 5v5C
2.某类只要求生成一个对象的时候,如一个班中的班长、每个人的身份证号等
3.某些类创建实例时占用资源较多,或实例化耗时较长,且经常使用
4.某类需要频繁实例化,而创建的对象又频繁被销毁的时候,如多线程的线程池、网络连接池等
5.频繁访问数据库或文件的对象
6.对于一些控制硬件级别的操作,或者从系统上来讲应当是单一控制逻辑的操作,如果有多个实例,则系统会完全乱套
7.当对象需要被共享的场合。由于单例模式只允许创建一个对象,共享该对象可以节省内存,并加快对象访问速度。如 Web 中的配置对象、数据库的连接池等
示例
懒汉式
/**
* 单件模式-懒汉式
*/
public class