黑马程序员技术交流社区
标题:
关于单例设计模式
[打印本页]
作者:
北冥有鱼
时间:
2014-3-7 03:14
标题:
关于单例设计模式
都说单例设计模式除非使用暴力映射否则只能建立一个对象。于是胡乱改改,请问一下给单例设计模式添加了构造参数,是不是就不算是单例设计模式了
class Single
{
int num;
private static Single s=null;
private Single(int num){
this.num=num;
}
public static Single getInstance(int num)
{
//while(s==null)
//{
//synchronized(Single.class)//单例设计模式———懒汉式加锁
//{
s=new Single(num);
//}
//}
return s;
}
}
class SingleDemo
{
public static void main(String[] args)
{
Single s1=Single.getInstance(1);
Single s2=Single.getInstance(2);
System.out.println("s1="+s1.num);
System.out.println("s2="+s2.num);
System.out.println("s1="+s1.num);
}
}
复制代码
作者:
王松松
时间:
2014-3-7 14:00
class Single
{
int num;
private static Single s = null;
private Single(int num){
this.num = num;
}
public static Single getInstance(int num)
{
while(s==null){//这行代码必须要加上才能实现单例
s=new Single(num);
}
return s;
}
}
public class SingleDemo
{
public static void main(String[] args)
{
Single s1=Single.getInstance(1);
Single s2=Single.getInstance(2);
System.out.println(s1==s2);//true,说明是同一个对象,还是单例设计模式
System.out.println("s1="+s1.num);//1
System.out.println("s2="+s2.num);//1
System.out.println("s1="+s1.num);//1
}
}
复制代码
作者:
混蛋哥
时间:
2014-3-7 14:17
王松松 发表于 2014-3-7 14:00
不加上也能实现单例,看毕老师的视频单例有两种方式,你说的这个是懒汉式单例,其实单例模式分为三种:懒汉式单例、饿汉式单例、登记式单例三种。你添加构造函数还是单例设计模式。
单例模式有一下特点:
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
作者:
杯之水
时间:
2014-3-7 14:44
还是单例设计模式,因为不管是通过懒汉式还是饿汉式,当在main函数中调用getInstance(int num)时,内存中始终都只有一个对象,建立s1,s2只不过增加了指向该对象的引用,若是带参构造函数,则参数就是首次建立对象的参数,不会改变,要想改变,可以通过get和set方法实现。
作者:
1844611785
时间:
2014-3-7 14:49
怎么叫给单例模式添加构造函数就不是单例了?单例模式的构造函数只是private 的而已,不容许外界new对象,但是提供创建实例方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2