黑马程序员技术交流社区

标题: 关于单例设计模式 [打印本页]

作者: 郑雅杰    时间: 2012-12-15 19:54
标题: 关于单例设计模式
单例设计模式有两种方式有懒汉式和饿汉式。两者的区别就是实例化的顺序不同。都能实现单例设计的功能。开发中用饿汉式,那懒汉式既然又不安全又麻烦。万事万物都有其存在的必要于意义。那懒汉式存在的意义与价值在哪里啊,请教一下各位。谢谢
作者: 黑马黄涛    时间: 2012-12-15 20:14
饿汉式在加载类时就会创建那个静态对象,就会占据一定内存......
懒汉式就不会了吧!~你只有在第一次使用getInstance()方法才会new出对象...

呵呵,还是在面试之后彻底忘了懒汉式吧...
作者: 黄嵘才    时间: 2012-12-15 20:37
我是这样理解的:
1,懒汉式:调用一次getInstance()就相当于执一次new,并返回实例。
return new Singleton();
如果你很懒,你只是突然想用(吃包子),让它新做一个实例(包子)。
2.饿汉式:这个实例一直都在那里,拿来就可以用了。
public Singleton getInstance(){return singletion;}
如果你很饿,你一要时时准备这个实例(包子),因为我随时可能要用到(吃包子)。
总结:
明显的,做一次包子花的时间比较拿包子的时间长。
这个可能和性能有关系,才决定你要用哪一种。
人人很饿,如果人人都跟老板讲,我要new一个新的。效率就不好了。
作者: 乔叶旭    时间: 2012-12-15 20:50
两者应该都可以解决问题,但是懒汉式,存在安全问题(需要同步),懒汉式会在面试的时候考到。
作者: 郑雅杰    时间: 2012-12-15 21:47
黑马黄涛 发表于 2012-12-15 20:14
饿汉式在加载类时就会创建那个静态对象,就会占据一定内存......
懒汉式就不会了吧!~你只有在第一次使用getI ...

呵呵  谢谢回答  
作者: 郑雅杰    时间: 2012-12-15 21:48
esirong 发表于 2012-12-15 20:37
我是这样理解的:
1,懒汉式:调用一次getInstance()就相当于执一次new,并返回实例。
return new Singlet ...

明白了 谢谢你的回答哦  你还蛮有趣的
作者: 张辉2012    时间: 2012-12-15 21:48
答案就像以上同学解答的那样,我就不再赘述了。
单例模式中的饿汉式是开发中使用的,
至于懒汉式的唯一好处就是使用时才创建一个实例,不占用堆区空间。
但是由于懒汉式的这个特性所以会出现安全问题,所以会在面试的时候面试官问你这个问题 即考察了单例的设计模式又考察了多线程安全问题,所以是面试的重点问题!
作者: 郑雅杰    时间: 2012-12-15 21:49
乔叶旭 发表于 2012-12-15 20:50
两者应该都可以解决问题,但是懒汉式,存在安全问题(需要同步),懒汉式会在面试的时候考到。 ...

谢谢你的回答
作者: 郑雅杰    时间: 2012-12-15 21:54
张辉2012 发表于 2012-12-15 21:48
答案就像以上同学解答的那样,我就不再赘述了。
单例模式中的饿汉式是开发中使用的,
至于懒汉式的唯一好处 ...

谢谢你的回答  明白了




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