java-单例模式:饿汉式与懒汉式模式

发布时间 2023-12-28 19:17:11作者: 她的回眸一直很美

饿汉式单例模式

1.空间换取时间的模式

2.在类内实例对象时直接进行初始化,

public class Earth {
//定义私有构造方法,并在构造方法中打印输出“地球诞生”
private Earth(){

}
//定义私有静态类对象并完成实例化
private static Earth earth=new Earth();
//定义公有静态方法返回类内的私有静态对象
public static Earth getEarth(){
return earth;
}
}

 

public class Test {

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("第一个地球创建中。。。。");
Earth earth1=Earth.getEarth();
System.out.println("地球诞生");
System.out.println("第二个地球创建中。。。。");
Earth earth2=Earth.getEarth();
System.out.println("第三个地球创建中。。。。");
Earth earth3=Earth.getEarth();
System.out.println("问:三个地球是同一个么?");
System.out.println(earth1);
System.out.println(earth2);
System.out.println(earth3);
}
}

 

懒汉式单例模式

1.时间换取空间的模式

2.类内实例对象并不直接进行初始化,直到第一次调用get方法时,才会进行初始化操作

public class Emperor {
//定义私有构造方法
private Emperor(){

}
//定义私有静态类对象
private static Emperor emperor=null;
//定义公有静态方法返回类内的私有静态对象
public static Emperor getEmperor(){
if(emperor==null){
emperor=new Emperor();
}else{
return emperor;
}
return emperor;
}
}
public class Test {

public static void main(String[] args) {
System.out.println("创建1号皇帝对象");
Emperor emperor1=Emperor.getEmperor();
System.out.println("创建2号皇帝对象");
Emperor emperor2=Emperor.getEmperor();
System.out.println("创建3号皇帝对象");
Emperor emperor3=Emperor.getEmperor();
System.out.println("三个皇帝对象依次是:");
System.out.println(emperor1);
System.out.println(emperor2);
System.out.println(emperor3);
}
}