A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于XINCHENG 中级黑马   /  2013-9-2 00:39  /  1504 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-3 11:06 编辑
  1. class Single01 {
  2.         private Single01() {
  3.         }
  4.         private static Single01 s01 = new Single01(); // 这里的private关键字到底有什么作用?
  5.         public static Single01 getInstance01() {
  6.                 return s01;
  7. }
  8. }
复制代码
问题请参见注释,当我封装构造方法后,我在类Single01的外面已经不能再创建Single01的对象了,如果我去掉注释中的private关键字,编译,运行都没有报错,那为什么还要在那里加上private关键字呢?

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

6 个回复

倒序浏览
为什么叫单例?这种设计模式解决了什么问题?
学技术别硬记啊.
设计单例的目的就是解决在内存中只允许有一个实例对象的存在,你把构建方法都暴露出去 ,还叫什么单例.
回复 使用道具 举报
是可以不加的,毕老师有说 成员变量一般可以私有化一下,不私有化也行,对这里的情况没影响。
回复 使用道具 举报
本帖最后由 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;
}
}


评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
private修饰成员和构造函数
被修饰的内容只能被本类对象访问
单例模式是指程序中的操作始终都围绕同一个对象进行
这里用的一种思想是
1.在本类中创建一个本类对象
2.私有化类中的构造函数,目的是外界不能再调用这个构造函数,就不能再建立对象
3.提供公有方法使外界获得对象
回复 使用道具 举报
单例模式顾名思义只能有一个对象,不允许随便创建对象,构造函数当然要私有了,这样别人就不能创建对象
只能由本类创建一个对象,并由本类提供一个获得这个对象的方法
回复 使用道具 举报

看图,这是《深入浅出设计模式》中的内容,跟我想的差不多,为了限于内部调用,说白了就是显得专业。
你知道,如果不私有的话,我们可以直接通过Singleton.instance来获取该类实例,那么getInstance方法没失去作用了。。不专业。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马