关于单例模式,如何理解?
单例类有以下三个特点: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();//单例类二
不是产生了两个单例类吗?而特点一如何解释??
盼高手解答~~~~~ 展开
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();//单例类二
不是产生了两个单例类吗?而特点一如何解释??
盼高手解答~~~~~ 展开
4个回答
推荐于2017-09-04 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
单例模式就是 :
1、类的构造函数为private,即外部程序不能通过new关键字创建对象的实例
2、类中提供一个private static的 类变量引用 ;
3、单例类中提供静态方法 定义为 public static 的方法获取一个类的实例 ;
4、静态方法返回 类的引用,即 第2点中的 私有 静态变量 。
私有静态变量可以 定义的时候初始化 ,也可以 在第一次使用的时候,即调用AA.getInstanc()方法中判断 静态变量是否为空在初始化 。
1、类的构造函数为private,即外部程序不能通过new关键字创建对象的实例
2、类中提供一个private static的 类变量引用 ;
3、单例类中提供静态方法 定义为 public static 的方法获取一个类的实例 ;
4、静态方法返回 类的引用,即 第2点中的 私有 静态变量 。
私有静态变量可以 定义的时候初始化 ,也可以 在第一次使用的时候,即调用AA.getInstanc()方法中判断 静态变量是否为空在初始化 。
展开全部
你的单例类一的引用cm和单例类二的引用cm2实际上都指向了类EagerSingleton中的private static final EagerSingleton hungryman这个唯一的实例(这便是特点一:单例类只可有一个实例 ),即不管你创建再多的
EagerSingleton cm3=EagerSingleton.getInstance();
EagerSingleton cm4=EagerSingleton.getInstance();
......
其实cm3,cm4......他们都指向唯一的一个EagerSingleton类中的hungryman.即所有的单例类EagerSingleton的实例都是这个hungryman实例,明白了吗?
EagerSingleton cm3=EagerSingleton.getInstance();
EagerSingleton cm4=EagerSingleton.getInstance();
......
其实cm3,cm4......他们都指向唯一的一个EagerSingleton类中的hungryman.即所有的单例类EagerSingleton的实例都是这个hungryman实例,明白了吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单例 感觉 一般都是 私有化构造函数 然后提供一个方法来调用构造初始化
补充一点 上上面说的。。
补充一点 上上面说的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嗯,楼上的回答很好,可以设为答案了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询