Java单实例有两种实现方式:饿汉式和赖汉式
废话不多说直接上代码
package test;
import zb.main.domian.user;
public class user_instance_scope_single_hungry {
//饿汉式
private static user tom=new user(); //静态私有且实例化
private user_instance_scope_single_hungry(){} //私有构造方法保证
//user_instance_scope_single_hungry类不能实例化
public static user getTom(){ //只能通过该向外提供的方法获得user对象
return tom;
}
}
package test;
import zb.main.domian.user;
public class user_instance_scop_single_lazy {
//赖汉式
private static user lucy=null; //私有 静态 不实例化
private user_instance_scop_single_lazy(){}
public static user getLucy(){
if (lucy==null){ //判断是否为第一次使用,如为第一次使用lucy必为空则new一个
lucy=new user();
}
return lucy;
}
}
package test;
import zb.main.domian.user;
public class test {
public static void main(String[] args) {
//饿汉式
user tom = user_instance_scope_single_hungry.getTom();
user tom1 = user_instance_scope_single_hungry.getTom();
System.out.println(tom);
System.out.println(tom1);
//赖加载 赖汉式
user lucy = user_instance_scop_single_lazy.getLucy();
user lucy1 = user_instance_scop_single_lazy.getLucy();
System.out.println(lucy);
System.out.println(lucy1);
}
}
这里有必要解释的是声明的user对象必须为私有静态类型只有这样才能保住它是单实例的
由上可看出饿汉式与赖汉式的实现区别无非就是饿汉式在装载时就实例化了,
而赖汉式在第一次使用时才实例化