今天看到教学视频的单利设计模式部分,对类中有一个成员是本类对象非常疑惑
如果我们定义如下一个类:
class Demo
{
private Demo d=new Demo();
}
class DemoRun
{
public static void main(String[] args)
{
Demo dd=new Demo();
}
}
如果运行DemoRun 的话就会出现无限循环创建对象的情况发生,从而导致内存的溢出。
单例设计模式:
class Single
{
private Single(){}
private static Single s=new Single();
private static Single getInstance()
{
return s;
}
}
class SingleRun
{
public static void main(String[] args)
{
Single ss=Single.getInstance();
}
}
在单利设计模式中,本类的对象 d 被static修饰后,当程序执行 Single.getInstance()方法时,加载Single.class类文件,并完成对类的初始化,因为静态成员是被所有对象所共享的,所以产生的本类对象d就不会再去循环的创建对象了。各位大神,我这样理解对吗?如果不对,请赐教!
|
|