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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯盼 中级黑马   /  2012-12-1 11:37  /  1490 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yunhaitian 于 2012-12-1 13:24 编辑

单例设计模式一般建议使用饿汉式,但是饿汉式是在加载类时候就将对象加载进了内存,而且是静态的,这样它的生命周期与调用它的类一样。可是如果不是使用单例,那么实例化的对象生命周期和调用它的对象一样,调用它的对象生命周期结束,该对象也就消失并释放内存资源了。相比较而言,好像不使用单例设计模式要更节省内存,可是往往却都提倡使用单例设计模式?此处一直很是疑惑?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
单例设计模式只是为了该类只产生一个对象,不让外界产生其他对象。
饿汉式比懒汉式好是因为如果多个线程引用该唯一对象会产生安全问题,解决安全问题需要更多的资源。饿汉式效率更高。
类的字节码文件也是一个对象,当对象不再使用是将会被回收。
什么时候对象回收并不确定。
回复 使用道具 举报
使用单例设计模式是为了解决一个类在内存中只存在一个对象,想要保证对象的唯一性。
之所以建议使用饿汉式,首先分析下两种模式

懒汉模式:只有在自己需要对象的时候才会判断是否已有对象,如果没有就创建一个对象,然后返回,如果已有对象,立即返回。 所以懒汉式运行时获得对象的速度比较慢,但是类的加载比较快
饿汉式:在类加载的时候立即创建对象。 所以饿汉式运行时加载类的速度比较慢,但是获取对象的速度比较快

从用户体验的角度来说,我们应该首选饿汉模式。我们愿意等待某个程序花较长的时间初始化,却不喜欢在程序运行时等待太久,给人一种反应迟钝的感觉,所以对于有重量级对象参与的单例模式, 我们推荐使用饿汉模式 。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马