走在人间正道上 2016/11/6/周日 19:18:28
class Single{
private static Single INSTANCE=new Single();
private Single(){}
public static Single getInstance(){
return INSTANCE;
}
}
public static Single getInstance()----Single这个位置一般都是int,char,等数据类型,
Single不是数据类型,为什么放在那里
0 0,只要是类,都可以成为返回值呀。不一定指的是基础数据类型(String,int,boolean)等
还有getInstance()是为了返回当前类的对象的,其他类只有获取该类的对象,才能操纵该类的方法。
单例模式有好多写法
** 第一种**:类似楼主的写法
class Single{
public static final Single INSTANCE=new Single();
private Single(){}
}
优点:简洁
缺点:
1.调用时候,不太清晰,因为java很少获取成员变量
2.当单例模式类需要参数的时候,无法使用
第二种
class Single{
private static Single INSTANCE;
private int data;
private Single(int data){
this.data = data;
}
/**
*初始化
*/
public static Single init(int data){
synchronized(Single.class){
if (INSTANCE != null){
INSTANCE = new Single(data);
}
}
}
/**
*获取当前类的对象
*/
public static Single getInstance(){
if (INSTANCE == null){
throw new NullPointerException("not have been initialized");
}
else{
return INSTANCE;
}
}
}
你陷入了一个误区,应该是从C带过来的,在C里面是使用寄存器返回值,所以返回值的类型必须是基础类型,boolen int float 这些,但是java 不同,
java的返回值可以是任意类型,除了基础类型之外,有集合,字符串等。这里返回的是一个single()类的一个 对象。
在单例模式中,私有化构造方法。目的是为了在类外面无法使用构造函数建立新的对象。,然后用static 定义一个single()类对象,保证了单例模式只能有一个对象的实现(不考虑克隆和反射的情况下)
你还是看下java的语法吧,private static Single INSTANCE=new Single();表示创建一个私有静态的名字叫INSTANCE的Single的一个类。private Single(){} 表示构造方法私有,就是不能通过new的方式创建,后面有一个getInstance()方法,返回的就是你开始创建那个类。