黑马程序员技术交流社区
标题:
单例设计模式的private关键字的问题
[打印本页]
作者:
于XINCHENG
时间:
2013-9-2 00:39
标题:
单例设计模式的private关键字的问题
本帖最后由 杨增坤 于 2013-9-3 11:06 编辑
class Single01 {
private Single01() {
}
private static Single01 s01 = new Single01(); // 这里的private关键字到底有什么作用?
public static Single01 getInstance01() {
return s01;
}
}
复制代码
问题请参见注释,当我封装构造方法后,我在类Single01的外面已经不能再创建Single01的对象了,如果我去掉注释中的private关键字,编译,运行都没有报错,那为什么还要在那里加上private关键字呢?
作者:
范龙波
时间:
2013-9-2 00:45
为什么叫单例?这种设计模式解决了什么问题?
学技术别硬记啊.
设计单例的目的就是解决在内存中只允许有一个实例对象的存在,你把构建方法都暴露出去 ,还叫什么单例.
作者:
路边小色狼
时间:
2013-9-2 01:26
是可以不加的,毕老师有说 成员变量一般可以私有化一下,不私有化也行,对这里的情况没影响。
作者:
joechen
时间:
2013-9-2 07:48
本帖最后由 joechen 于 2013-9-2 07:53 编辑
单例设计模式:
解决一个类在内存中只存在一个对象
要想保证对象唯一:
1,为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
2,还为了让其他程序访问到该类对象,只好在本类中自定义一个对象
3,对外提供一些访问方式,方便其他程序对自定义对象的访问
步骤:
1,将构造函数私有化
2,在类中创建一个本类对象
3,提供一个方法可以获取到该类对象class Single01 {
private Single01() {//将构造函数私有化
}
private static Single01 s01 = new Single01(); // 这里的private关键字到底有什么作用?(在类中创建一个本类对象,单例设计模式得用)
public static Single01 getInstance01() {//对外提供一个方法可以获取到该类对象
return s01;
}
}
作者:
EYE_SEE_YOU
时间:
2013-9-2 08:33
private修饰成员和构造函数
被修饰的内容只能被本类对象访问
单例模式是指程序中的操作始终都围绕同一个对象进行
这里用的一种思想是
1.在本类中创建一个本类对象
2.私有化类中的构造函数,目的是外界不能再调用这个构造函数,就不能再建立对象
3.提供公有方法使外界获得对象
作者:
itachi
时间:
2013-9-2 14:09
单例模式顾名思义只能有一个对象,不允许随便创建对象,构造函数当然要私有了,这样别人就不能创建对象
只能由本类创建一个对象,并由本类提供一个获得这个对象的方法
作者:
masterV
时间:
2013-9-2 15:55
QQ截图20130902155125.png
(24.45 KB, 下载次数: 8)
下载附件
2013-9-2 15:51 上传
看图,这是《深入浅出设计模式》中的内容,跟我想的差不多,为了限于内部调用,说白了就是显得专业。
你知道,如果不私有的话,我们可以直接通过Singleton.instance来获取该类实例,那么getInstance方法没失去作用了。。不专业。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2