A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 章成 黑马帝   /  2011-7-22 10:03  /  6258 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

银行客户题中NumberMachine为什么要设计成单例模式?一般什么情况要用到单例模式?

评分

参与人数 1技术分 +2 收起 理由
xiaolong + 2 问得不错!

查看全部评分

3 个回复

倒序浏览

关于单例模式

一般银行的NumberMachine只能有一个,要是有两个NumberMachine,万一有两个客户取到同一个号码,怎么区分先后顺序呢?根据搜索的资料,单例模式(Singleton Pattern)确保某一个类只有一个实例,而且能够自行实例化并向整个系统提供这个实例。
[ 本帖最后由 孙斌 于 2011-07-22  10:59 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
xiaolong + 1 勉强加一分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-22 11:37:52
藤椅
单例模式能够保证一个类仅有唯一的实例,并提供一个全局访问点。

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

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

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

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

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

Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。
在银行实例中
我们在取现金,存的时候,常常会有很多人同时进行这样的一项内容。所以,对于这样的一个需求,我们按照面向对象的设计思想,可以把它抽象为“辨别器”这样一个对象。所以,把这个辨别器设计为一个全局对象,就可以避免类似的问题,这就是我们所说的单例模式的其中的一种应用。

评分

参与人数 1技术分 +3 收起 理由
xiaolong + 3 加分必须的!

查看全部评分

回复 使用道具 举报
上面回答得对。我再补充。单例用处:许多时候整个系统只需一个全局对象,有利于协调整体行为,统一调度。比如配置信息存放在一个文件中,它由一个单例对象统一读取,其它对象通过这个单例对象获得配置信息,简化了管理。另外就是上面说的,有时要求对象必须唯一,避免状态不一致。比如Systemd和Runtime就是单例的例子,它们是全局唯一的。还有就是,一个对象创建需消耗大量的资源时,可以考虑用单例

评分

参与人数 1技术分 +1 收起 理由
xiaolong + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马