单例学习

/**
 * 单例模式,通常单例模式在Java语言中,有两种构建方式:
 * 懒汉方式:指全局的单例实例在第一次被使用时构建。
 * 饿汉方式:指全局的单例实例在类装载时构建。
 * @author xw
 */

public class Single {
	 //懒汉模式
	 private static Single instance = null; 
	 /** 
	  * 私有的默认构造子,保证外界无法直接实例化 
	  */ 
	 private Single(){
		 System.out.println("Single()");
	 }

	 /** 
	 * 静态工厂方法,返还此类的惟一实例 
	 */ 
	 synchronized public static Single 	getInstance() 
	 { 
		 if (instance == null) 
		 {
			 instance = new Single(); 
		 } 
		 System.out.println("getInstance()");
		 return instance; 
	 }

	 
	//饿汉模式
	private static  final  Single instance = new Single();
	 /** 
	 * 私有的默认构造子,保证外界无法直接实例化 
	 */ 
	 private Single(){
		 System.out.println("Single()");
	 }
	 
	 public static Single getInstance(){
		 System.out.println("getInstance");
		 return instance;
	 }
	 
	
	 public static void main(String[] args) {
		    System.out.println("========================================");   
		    System.out.println("下面是使用单例模式,来调用类的实例");
		    System.out.println("========================================"); 
		    for(int i=0;i<6;i++){
		     int m=i+1;
		     System.out.println("第 "+m+" 次"+"得到的对象值为 "+Single.instance);
		     System.out.println("第 "+m+" 次"+"得到的对象值为 "+Single.getInstance());
		    }
		 }
	}

1、懒汉方式:
========================================
下面是使用单例模式,来调用类的实例
========================================
第 1 次得到的对象值为 null
Single()
getInstance()
第 1 次得到的对象值为 Single@1f6a7b9
第 2 次得到的对象值为 Single@1f6a7b9
getInstance()
第 2 次得到的对象值为 Single@1f6a7b9
第 3 次得到的对象值为 Single@1f6a7b9
getInstance()
第 3 次得到的对象值为 Single@1f6a7b9
第 4 次得到的对象值为 Single@1f6a7b9
getInstance()
第 4 次得到的对象值为 Single@1f6a7b9
第 5 次得到的对象值为 Single@1f6a7b9
getInstance()
第 5 次得到的对象值为 Single@1f6a7b9
第 6 次得到的对象值为 Single@1f6a7b9
getInstance()
第 6 次得到的对象值为 Single@1f6a7b9

2、饿汉方式
Single()
========================================
下面是使用单例模式,来调用类的实例
========================================
第 1 次得到的对象值为 Single@1f6a7b9
getInstance
第 1 次得到的对象值为 Single@1f6a7b9
第 2 次得到的对象值为 Single@1f6a7b9
getInstance
第 2 次得到的对象值为 Single@1f6a7b9
第 3 次得到的对象值为 Single@1f6a7b9
getInstance
第 3 次得到的对象值为 Single@1f6a7b9
第 4 次得到的对象值为 Single@1f6a7b9
getInstance
第 4 次得到的对象值为 Single@1f6a7b9
第 5 次得到的对象值为 Single@1f6a7b9
getInstance
第 5 次得到的对象值为 Single@1f6a7b9
第 6 次得到的对象值为 Single@1f6a7b9
getInstance
第 6 次得到的对象值为 Single@1f6a7b9

你可能感兴趣的:(学习)