public class Singleton{
private static Singleton sl;
private Singleton(){
System.out.println("初始化");
}
public static Singleton getInstance(){
if(sl==null)
sl=new Singleton();
return sl;
}
public static void main(String[] args){
Singleton sl=Singleton.getInstance();
Singleton sl2=Singleton.getInstance();
}
}运行结果是显示一个初始化所以有
/***
* 饿汉模式
*/
public class Singleton2{
private final static Singleton2 sl2=new Singleton2();
private Singleton2(){
System.out.println("初始化");
}
public static Singleton2 getInstance(){
return sl2;
}
public static void main(String[] args){
Singleton2 sl2=Singleton2.getInstance();
Singleton2 sl3=Singleton2.getInstance();
}
}这种单例模式,我们在类加载的时候,就把类变量new出来。这种方式我们称之为饿汉模式。public class Singleton3{
private static class hold{
private final static Singleton3 sl3=new Singleton3();
}
private Singleton3(){
System.out.println("初始化");
}
public static Singleton3 getInstance(){
return hold.sl3;
}
public static void main(String[] args){
Singleton3 sl3=Singleton3.getInstance();
Singleton3 sl4=Singleton3.getInstance();
System.out.println(sl3==sl4);
}
}关于内部类与static,final的分析,我们这里暂时不讲。内部类是java支持的,但是在别的语言中,不一定。
原文地址:http://blog.csdn.net/dlf123321/article/details/42062669