3-1饿汉式创建有关问题

3-1饿汉式创建有关问题

  1. 为什么静态实例要私有?

  2. SingletonOne one = SingletonOne.getInstance();
    听课后我理解的是:对象实例化过程会默认调用构造方法进行实例化,因此为了限制实例化的路径,设置构造方法为私有,这样类外就不能再实例化过程中调用构造方法,这样措辞对嘛?
  3. 我不理解的是:等号后的这种书写格式,是只有在静态实例可以这么使用还是只要构造方法私有了都可以?为什么方法的调用可以和对象划等号?我感觉自己说的有问题 老师能不能等号前后分别是什么解释一下?
  4. 在test类中的调用过程是怎样的?具体在SingletonOne这个类中先执行哪句后执行哪句?我尝试过debug 但不能得出我想要的结果,因为我不太明白这个模式想要达到的目的 跟之前所学的不知道怎么连接,感觉中断了,这章的课死记硬背行不行?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

1、对于第一个问题,单例模式的目的就是禁止其他类创建该类的对象,所以要声明为private,保证只能在本类中创建,而无法在其他类创建该类的对象。

2、对于第二个问题,你的理解是正确的。

3、对于第三个问题,因为getInstance()方法是静态方法,所以直接可以通过类名.方法名的方式,调用静态方法。又因为getInstance()方法返回时是SingletonOne类型,所以就需要使用SingletonOne类型进行接收调用getInstance()方法后的值。

简单来说就是,右面为通过类名调用getInstance()方法,而左面就是接收getInstance()方法返回的对象 为SingletonOne类型的对象 one。

如:

http://img1.sycdn.imooc.com//climg/5dc1555509c5860c05480124.jpg

4、对于第四个问题,test类中的调用过程其实就是首先执行Test类中的main()方法,然后执行SingletonOne one =SingletonOne.getInstance();代码时,首先会加载SingletonOne 类,静态方法和静态变量会在类加载时初始化,也就是执行private static SingletonOne instance=new SingletonOne();代码,然后调用getInstance();方法,返回对象实例。输出one对象,结束代码。

建议同学可以先将代码记下来,可以按照思路进记下。也建议同学多听几遍课程哦~

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 慕后端4084011 提问者 #1
    SingletonOne one = SingletonOne.getInstance(); 老师结合你说的 我又看了一遍视频 你看我理解的这样说对不对:在类中完成实例构造后,通过公开方法返回这个实例,而在测试类中因为实例私有不能new,需要通过调用静态方法中返回的静态实例给多个该类不同对象,此时不同对象的引用都是instance的实例引用地址?
    2019-11-06 11:58:53
  • 好帮手慕酷酷 回复 提问者 慕后端4084011 #2
    同学你好,你的理解是正确的,很棒!如果我的回答解决了你的疑惑,请采纳!祝学习愉快!​
    2019-11-06 13:38:05
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师