1. 程式人生 > >java 懶漢模式以及餓漢模式

java 懶漢模式以及餓漢模式

1,餓漢模式的方法

public class Singleton {
	//1.將構造方法私有化,不允許外部直接建立物件
	private Singleton(){		
	}
	
	//2.建立類的唯一例項,使用private static修飾
	private static Singleton instance=new Singleton();
	
	//3.提供一個用於獲取例項的方法,使用public static修飾
	public static Singleton getInstance(){
		return instance;
	}
}

2 ,懶漢模式的方法

public class Singleton2 {
	//1.將構造方式私有化,不允許外邊直接建立物件
	private Singleton2(){
	}
	
	//2.宣告類的唯一例項,使用private static修飾
	private static Singleton2 instance;
	
	//3.提供一個用於獲取例項的方法,使用public static修飾
	public static Singleton2 getInstance(){
		if(instance==null){
			instance=new Singleton2();
		}
		return instance;
	}
}

3,測試用例

package com.imooc;

public class Test {
	public static void main(String[] args) {
		//餓漢模式
		Singleton s1=Singleton.getInstance();
		Singleton s2=Singleton.getInstance();
		if(s1==s2){
			System.out.println("s1和s2是同一個例項");
		}else{
			System.out.println("s1和s2不是同一個例項");
		}
		
		//懶漢模式
		Singleton2 s3=Singleton2.getInstance();
		Singleton2 s4=Singleton2.getInstance();
		if(s3==s4){
			System.out.println("s3和s4是同一個例項");
		}else{
			System.out.println("S3和s4不是同一個例項");
		}
		
	}
}

很清晰的原始碼,感謝慕課網的老師