黑马程序员技术交流社区
标题:
单例设计模式的懒汉式不理解啊。
[打印本页]
作者:
汤姆纳斯
时间:
2014-6-12 16:34
标题:
单例设计模式的懒汉式不理解啊。
本帖最后由 汤姆纳斯 于 2014-6-12 20:54 编辑
class Single
{
private static Single s=null;
private Single(){}
public static Single getInstance()
{
if (s==null)
s= new Single();
return s;
}
}
if后面是什么意思?
作者:
yanghu
时间:
2014-6-12 17:00
s== null ,就是表示s没有指向Single类实例的引用,也就是表明还没有new一个Single类的实例,那么就创建一个,并返回。
作者:
黑马_白马
时间:
2014-6-12 17:45
用我的理解就是,思想就是不调用时不初始化,一旦调用时再初始化。所以,if后面是给s初始化呢,new一个对象。因为一开始s为空,if后在实例化。
作者:
Super__kids
时间:
2014-6-12 17:58
这就是懒汉式的独特的地方,if是判断s的 ,如果s为空就执行下面的语句,生成一个对象,当然,懒汉式都为空,且都会生成对象,要不然就没有意义了。饿汉式就不会判断了,运行时就直接给你在堆内存里分配各空间。
作者:
不去会死
时间:
2014-6-12 18:42
任何类型的变量都有对应的默认的初始化值,好比int初始化值为0,String初始化值为null。你这个s 是你定义的person类型的变量,相当于C中的指针类型的变量。所以他初始化值为null. 意思是这个s没有任何内容
作者:
yuZhe_toString
时间:
2014-6-12 19:14
就是很懒,不想先初始化,非得有人叫他他才初始化。
作者:
crazystraw
时间:
2014-6-12 19:23
为了保证内存中只有一个Single对象才用if语句判断,如果内存中没有即为null,那么创建一个,如果内存中有Single对象,那么就用内存中的
作者:
liujie445012100
时间:
2014-6-12 20:41
楼主真是标准的懒汉,if(s==null){}就说明没有指向的内存地址,你就给他指向一个不就完了嘛
作者:
汤姆纳斯
时间:
2014-6-12 20:54
想了想,懂了。
作者:
alive
时间:
2014-6-12 22:18
就是到用的时候,才判断有没有Single类的对象,没有的话就创建一个对象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2