黑马程序员技术交流社区

标题: 单例模式有什么好处? [打印本页]

作者: 章成    时间: 2011-7-22 10:03
标题: 单例模式有什么好处?
银行客户题中NumberMachine为什么要设计成单例模式?一般什么情况要用到单例模式?
作者: 孙斌    时间: 2011-7-22 10:56
标题: 关于单例模式
一般银行的NumberMachine只能有一个,要是有两个NumberMachine,万一有两个客户取到同一个号码,怎么区分先后顺序呢?根据搜索的资料,单例模式(Singleton Pattern)确保某一个类只有一个实例,而且能够自行实例化并向整个系统提供这个实例。
[ 本帖最后由 孙斌 于 2011-07-22  10:59 编辑 ]
作者: 匿名    时间: 2011-7-22 11:37
单例模式能够保证一个类仅有唯一的实例,并提供一个全局访问点。

单例模式主要有3个特点,:

1、单例类确保自己只有一个实例。

2、单例类必须自己创建自己的实例。

3、单例类必须为其他对象提供唯一的实例。

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

Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。
在银行实例中
我们在取现金,存的时候,常常会有很多人同时进行这样的一项内容。所以,对于这样的一个需求,我们按照面向对象的设计思想,可以把它抽象为“辨别器”这样一个对象。所以,把这个辨别器设计为一个全局对象,就可以避免类似的问题,这就是我们所说的单例模式的其中的一种应用。
作者: 王亮    时间: 2011-7-22 11:47
上面回答得对。我再补充。单例用处:许多时候整个系统只需一个全局对象,有利于协调整体行为,统一调度。比如配置信息存放在一个文件中,它由一个单例对象统一读取,其它对象通过这个单例对象获得配置信息,简化了管理。另外就是上面说的,有时要求对象必须唯一,避免状态不一致。比如Systemd和Runtime就是单例的例子,它们是全局唯一的。还有就是,一个对象创建需消耗大量的资源时,可以考虑用单例




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