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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张其辉 中级黑马   /  2012-11-29 23:19  /  1538 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张其辉 于 2012-11-30 21:35 编辑

复习单例模式发现有个小问题不懂:第一句和第三句我能理解,下面红色的语句为什么要私有化?作用是什么?
private static Single s=new Single();
private Single(){};//这里为什么把构造函数私有化了?
public static Single getInstance(){return s;}

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
首先要知道私有化的含义:不能被其他类所调用
而单例模式的目的是只能创建一个对象

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

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

你可以试试把构造函数私有化private这个关键字去掉 然后用其他类创建就知道为什么要把构造函数私有化了

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
单例模式就是只能拥有一个对象,不论你怎么new对象用的都是这一个对象,这就要求了对构造函数的私有化。
解决一个类在内存中只存在一个对象;
怎样保证唯一性:
1、为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象;
2、还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象;
3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式;
用代码怎样体现着唯一性:
1、将构造函数私有化;
2、在本类中创建一个本类对象;
3、提供一个方法获取到该对象;


红字的私有化就是不让外部程序进行new操作创建新的对象,只能够通过第三句的getInstance得到第一句已经建立的对象s。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
谢谢两位,了解了!!

点评

你可以结贴了 。  发表于 2012-11-30 11:43
回复 使用道具 举报
一句话,就是不让你创建对象,保证对象的唯一性啊。哥哥
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马