`
sxpyrgz
  • 浏览: 70822 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为什么要使用单例

    博客分类:
  • java
阅读更多

为什么使用单例模式:在没有看下面以前,自个儿想一下,为什么使用????

 

 

为什么好多考官都要考单例模式,现将自已的理解做一下简单介绍:

  其实程序最初的思想是用NEW去创建一个实例对象,然后我们使用这个实例对象去做一些相关的操作,那如果有多个线程同时访问,那意味着要NEW多个实例对象,这样不仅使服务器性能下降,而且占用内存会越来越大,线程越多,占用内存越大。例:

  当我们需要访问的时候总是需要NEW一个CONNECT实例,然后才能用实例进行增删改的相关操作,然而这对于一个WEB客户端,在每次访问的时候都会在服务器端启动一个线程进行相关处理,这意味着,假如有一万个Web客户端将要启动一万个线程都去访问服务器,那将会,NEW一万个实例对象,这样不仅是非常占内存,而且性能也会急剧下降,后果可想而知......,因此优秀的程序员们绞尽脑汁的去优化自已的程序。有人提问:在这一万个WEB客户端线程间,是否能将CONNECT只用一个实例,让每一个WEB客户端都去访问这个连接?答案就是单例。如果我们创建一个单例程序,然后在服务器启动后,自始自终,服务器只对某个类进行一次实例,这就是单例。它不仅能节省服务器的内存,也能提高服务器的性能。如果平凡的使用NEW也会耗相当大的内存,所以在能够多个线程之间共用一个对象的时候,尽量用单例模式去实现该程序。
  SPRING是我们每个人都非常熟知的开源框架。SPRING中大量使用了单例去初始化一些BEAN。这使得我们N多WEB客户端在请求的时候不需要在NEW一些东西,只需要去得到单例的对象去操作,就可以了,它的依赖注入也只是将这些单例的实例对象得到然后进行注入到另一个对象,进行使用。

        Ext JS中也使用了不少的单例模式,JS使用单例,可以对客户浏览器中的内存得到充分的利用。

      以上只为个人理解,如有不恰当处,还望大家批评指正。

  

分享到:
评论
3 楼 sxpyrgz 2012-02-20  
braveone 写道
servlet也是使用单例模式,那么当多个用户请求时,是不是要处理完了一个用户请求,才能处理下一个客户请求呢,这样对效率有帮助吗?

每个用户请求都会有一个THREAD,你说的处理完了一个用户请求,才能处理下一个客户请求,这个是线程同步的问题,如果同步的话,就只能一个一个处理。
2 楼 braveone 2012-02-16  
servlet也是使用单例模式,那么当多个用户请求时,是不是要处理完了一个用户请求,才能处理下一个客户请求呢,这样对效率有帮助吗?
1 楼 happenZheng 2010-12-29  
下次,建议楼主把文字写大点。。。

相关推荐

Global site tag (gtag.js) - Google Analytics