饿汉式单例模式
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); } }