黑马程序员技术交流社区

标题: 不太明白的一点 [打印本页]

作者: 张其辉    时间: 2012-11-29 23:19
标题: 不太明白的一点
本帖最后由 张其辉 于 2012-11-30 21:35 编辑

复习单例模式发现有个小问题不懂:第一句和第三句我能理解,下面红色的语句为什么要私有化?作用是什么?
private static Single s=new Single();
private Single(){};//这里为什么把构造函数私有化了?
public static Single getInstance(){return s;}
作者: 黑马李勇    时间: 2012-11-29 23:30
首先要知道私有化的含义:不能被其他类所调用
而单例模式的目的是只能创建一个对象

所以构造函数私有化是为了其他类不能创建本类对象

如果不把构造函数私有化的话,其他类就可以创建单例模式的对象了,单例模式也就没有存在的意义了。

你可以试试把构造函数私有化private这个关键字去掉 然后用其他类创建就知道为什么要把构造函数私有化了
作者: 高志鹏    时间: 2012-11-29 23:33
单例模式就是只能拥有一个对象,不论你怎么new对象用的都是这一个对象,这就要求了对构造函数的私有化。
解决一个类在内存中只存在一个对象;
怎样保证唯一性:
1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象;
2、还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象;
3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式;
用代码怎样体现着唯一性:
1、将构造函数私有化;
2、在本类中创建一个本类对象;
3、提供一个方法获取到该对象;


红字的私有化就是不让外部程序进行new操作创建新的对象,只能够通过第三句的getInstance得到第一句已经建立的对象s。
作者: 张其辉    时间: 2012-11-29 23:49
谢谢两位,了解了!!
作者: 梁胜海    时间: 2012-11-30 13:20
一句话,就是不让你创建对象,保证对象的唯一性啊。哥哥




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