黑马程序员技术交流社区
标题:
单例设计模式问题
[打印本页]
作者:
wjj410830911
时间:
2013-11-18 10:43
标题:
单例设计模式问题
老师教了我们2种单列设计模式
(1)饿汉式
class Single{
private Single(){
}
static Single s = new Single();
public static Single getInstance(){
return s;
}
}
复制代码
第二种
(2)懒汉式
class Single {
private Single(){}
private static Single s;
public static Single getInstance(){
if(s==null){
s = new Single();
}
return s;
}
}
复制代码
这两种 有什么区别吗? 一般都用那种? 什么时候用啊?
作者:
不抛弃不放弃
时间:
2013-11-18 10:56
饿汉式:
对象预先加载,线程是安全的,在类创建好的同时对象生成,调用获得对象实例的方法反应速度快,代码简练。
懒汉式:
对象延迟加载,效率高,只有在使用的时候才实例化对象,但若设计不当线程会不安全,代码相对于饿汉式复杂,第一次加载类对象的时候反应不快。
一般用饿汉式
什么时候用/?
对一些类来说,只有一个实例是很重要的。例如很多时候对于某个系统只需要拥有一个全局对象,这样有利于我们协调系统的整体行为。
再比如说某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象
再通过这个单例对象获取这些配置信息。从而简化了在比较复杂的环境下配置管理。
作者:
卑微の小幸福
时间:
2013-11-18 12:12
两种方法各有其长:
饿汉式 :先创建对象,对单例的诠释更加权威,但是先创建嘛,会产生点点预先的垃圾。
懒汉式 :是在需要时调用他是再创建对象,可以节约内存空间。但是在多线程中会有弊端,可能不能保证单例,
一般开发用饿汉式,但好像面试考懒汉式,所以两种都要掌握!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2