单例模式分为两种:饿汉式、懒汉式
既然是单例模式,那么就只有一个实例,那么构造方法就是私有的,就需要创建一个对象,而且也需要是私有的,但是需要调用所以要设置成静态的,然后提供一个方法拿到这个私有的对象。
一个类只会生成唯一的一个对象。
单例模式:饿汉式
1.私有构造方法
2.创建私有的静态对象
3.创建一个公共公开的方法,返回该私有对象
1 2 3 4 5 6 7 8 9
   | public class Single1 {   private static Single1 s1=new Single1();   private Single1(){ 	     }   public static  Single1 getInstance(){ 	  return s1;   } }
  | 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | public class TestSingle1 { 	public static void main(String[] args) { 		 		/*Single1 s1=new Single1(); 		System.out.println(s1); 		Single1 s2=new Single1(); 		System.out.println(s2); 		System.out.println(s1==s2);*/ 		Single1 s1=Single1.getInstance(); 		System.out.println(s1); 		Single1 s2=Single1.getInstance(); 		System.out.println(s2); 		System.out.println(s1==s2); 		 	} }
  | 
 
1 2 3
   | com.qf.oop.innerclass.Single1@15db9742 com.qf.oop.innerclass.Single1@15db9742 true
   | 
 
饿汉式就是更急切的new出来了对象,而懒汉式就不这样了,其实,本质是一样的,让我们来看看懒汉吧。
单例模式:懒汉式
1.私有构造方法
- 创建私有静态对象
3.创建公开公共的静态方法返回该私有对象 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
   | public class Single2 {   private static Single2 s2=null;   private Single2(){ 	     }   public static Single2 getInstance(){ 	  if(s2==null){ 		  s2=new Single2(); 	  } 	  return s2;   }   /*public static Single2 getInstance(){ 	  if(s2==null){ 		  return new Single2(); 	  } 	  return s2;  错误的   }*/ }
  | 
 
1 2 3 4 5 6 7 8 9 10 11
   | public class TestSingle2 { 	public static void main(String[] args) { 		  Single2 s1=Single2.getInstance(); 		  System.out.println(s1); 		  Single2 s2=Single2.getInstance(); 		  System.out.println(s2); 		  System.out.println(s1==s2); 		  //Object 		   	} }
  | 
 
懒汉式的单例模式有一种错误的方法,我已经在代码中写出来了,大家一定要注意,仔细一点哦。
我的csdn博客