黑马程序员技术交流社区

标题: 单例 [打印本页]

作者: 史晓霞    时间: 2011-11-9 17:11
标题: 单例
为什么要用到单例,单例的作用用途是什么
作者: 王赫麟    时间: 2011-11-9 17:22
{:soso_e103:}没看懂。。

作者: 王赫麟    时间: 2011-11-9 17:25
Java中用单例模式有什么好处

Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。

我们在浏览BBS、SNS网站的时候,常常会看到“当前在线人数”这样的一项内容。对于这样的一项功能,我们通常的做法是把当前的在线人数存放到一个内存、文件或者数据库中,每次用户登录的时候,就会马上从内存、文件或者数据库中取出,在其基础上加1后,作为当前的在线人数进行显示,然后再把它保存回内存、文件或者数据库里,这样后续登录的用户看到的就是更新后的当前在线人数;同样的道理,当用户退出后,当前在线人数进行减1的工作。所以,对于这样的一个需求,我们按照面向对象的设计思想,可以把它抽象为“在线计数器”这样一个对象。

网站代码中凡是用到计数器的地方,只要new一个计数器对象,然后就可以获取、保存、增加或者减少在线人数的数量。不过,我们的代码实际的使用效果并不好。假如有多个用户同时登录,那么在这个时刻,通过计数器取到的在线人数是相同的,于是他们使用各自的计数器加1后存入文件或者数据库。这样操作后续登陆的用户得到的在线人数,与实际的在线人数并不一致。所以,把这个计数器设计为一个全局对象,所有人都共用同一份数据,就可以避免类似的问题,这就是我们所说的单例模式的其中的一种应用。

单例模式能够保证一个类仅有唯一的实例,并提供一个全局访问点。


百度到的 可以参考下
作者: 郝亚平    时间: 2011-11-9 17:26
自己也想了解点。Java中单例模式,学习。
作者: 胡文杰    时间: 2011-11-9 17:36
单例的设计模式,就是只能生成一个实例对象,也就是一一对应的,如你的银行卡只能你来使用,这就是单例的好处!
作者: 胡文杰    时间: 2011-11-9 17:40
单例的设计模式就是只能生成一个实例对象,当有实例对象就不能再生成新的对象了!也就是所谓的一一对应!如一个银行卡,你使用的时候,别人还能使用嘛?显然不能的!所以就用单例!在你用这张银行卡得时候,别人不能用!这就是单例的好处
作者: 胡文杰    时间: 2011-11-9 18:12
单例的设计模式是只能生成一个实例对象的!当在堆内有这个实例对象的话,就不能再次生成一个实例对象,就像一张银行卡,你正在用,别人能用么?显然是不能的,所以就应该用单例,这就是单例模式的好处,还有就是因为它只能生成一个实例对象,所以不会浪费内存空间!

作者: 胡文杰    时间: 2011-11-9 18:15
单例的设计模式是只能生成一个实例对象的!当在堆内有这个实例对象的话,就不能再次生成一个实例对象,就像一张银行卡,你正在用,别人能用么?显然是不能的,所以就应该用单例,这就是单例模式的好处,还有就是因为它只能生成一个实例对象,所以不会浪费内存空间!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2