只有一个实例
在整个软件系统运行过程中,这个类只被实例化一次,以后不论在哪都只调用这一个实例
懒汉式和饿汉式的区别是when new
懒:第一次有人调用getInstance时new(存在线程安全问题)
饿:在类加载之后,还没有人调用时,先new好
饿汉式
public class Single {
//构造方法私有化,调用这个类的人就不能使用new来创建对象
private Single() {
}
//私有的Single类型的类变量,给他实例化
private static Single single = new Single();
public static Single getInstance() {//static方法可用类名加方法名调用
return single;
}
}
调用时
Single s = Single.getInstance();
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
Single s3 = Single.getInstance(); //都指向之前先的篇private static的那个single
懒汉式
public class Single1 {
//先私有化构造方法,让外面不能直接new对象
private Single1(){
}
private static Single1 s1 = null;//由第一次决定
public static Single1 getIntance() {
if(s1 == null) {
s1 = new Single();
}
return s1;//以后全部都是第一个的
}
}