所谓单例模式,即使类所产生的对象始终保持唯一性。下面说一下单例模式的作用。
- 控制资源的使用,通过线程同步来控制资源的并发访问。
比如文件管理器
操作系统是一个典型的多进程多线程系统,那么在创建或者删除某个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象。采用单例模式设计的文件管理器就可以完美的解决这个问题,所有的文件操作都必须通过唯一的实例进行,这样就不会产生混乱的现象。
- 控制实例产生的数量,达到节约资源的目的。
比如,数据库连接池的设计一般采用单例模式。
数据库连接是一种数据库资源。软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的。当然,使用数据库连接池还有很多其它的好处,可以屏蔽不同数据数据库之间的差异,实现系统对数据库的低度耦合,也可以被多个系统同时使用,具有高可复用性,还能方便对数据库连接的管理等等。数据库连接池属于重量级资源,一个应用中只需要保留一份即可,既节省了资源又方便管理。所以数据库连接池采用单例模式进行设计会是一个非常好的选择。
- 作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。
下面举个实际的例子来进一步说明其作用:
比如说网站需要一个计数器对象来统计网站在线人数,若不考虑单例模式,则可能同一时刻会有多个用户登入网站,而此时计数器对象都增加一,但是,这