关于单例模式,如何理解?

单例类有以下三个特点:1、单例类只可有一个实例2、单例类必须自己创建自己这惟一的实例3、单例类必须给所有其他对象提供这一实例有如下一个单例类:publicclassEag... 单例类有以下三个特点:
1、单例类只可有一个实例
2、单例类必须自己创建自己这惟一的实例
3、单例类必须给所有其他对象提供这一实例
有如下一个单例类:
public class EagerSingleton{
private static final EagerSingleton hungryman=new EagerSingleton();
//默认的私有的构造函数
private EagerSingleton(){}
//静态工厂方法
public static EagerSingleton getInstance(){
return hungryman;
}
public void say(){
System.out.println("饿汉式类在说话了!");
}
}

而在引用的时候我这样子:
EagerSingleton cm=EagerSingleton.getInstance();
EagerSingleton cm2=EagerSingleton.getInstance();
cm.say();//单例类一
cm2.say();//单例类二
不是产生了两个单例类吗?而特点一如何解释??
盼高手解答~~~~~
展开
 我来答
可以叫我表哥
推荐于2017-09-04 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
单例模式就是 :
1、类的构造函数为private,即外部程序不能通过new关键字创建对象的实例
2、类中提供一个private static的 类变量引用 ;
3、单例类中提供静态方法 定义为 public static 的方法获取一个类的实例 ;
4、静态方法返回 类的引用,即 第2点中的 私有 静态变量 。

私有静态变量可以 定义的时候初始化 ,也可以 在第一次使用的时候,即调用AA.getInstanc()方法中判断 静态变量是否为空在初始化 。
Java天地
推荐于2017-10-09 · TA获得超过158个赞
知道小有建树答主
回答量:71
采纳率:0%
帮助的人:146万
展开全部
你的单例类一的引用cm和单例类二的引用cm2实际上都指向了类EagerSingleton中的private static final EagerSingleton hungryman这个唯一的实例(这便是特点一:单例类只可有一个实例 ),即不管你创建再多的
EagerSingleton cm3=EagerSingleton.getInstance();
EagerSingleton cm4=EagerSingleton.getInstance();
......
其实cm3,cm4......他们都指向唯一的一个EagerSingleton类中的hungryman.即所有的单例类EagerSingleton的实例都是这个hungryman实例,明白了吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangyihld
2008-01-28 · TA获得超过197个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:133万
展开全部
单例 感觉 一般都是 私有化构造函数 然后提供一个方法来调用构造初始化
补充一点 上上面说的。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5200952
2008-01-27 · TA获得超过6242个赞
知道小有建树答主
回答量:1034
采纳率:0%
帮助的人:0
展开全部
嗯,楼上的回答很好,可以设为答案了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式