天天看點

Android設計模式(1)----單例模式

在很多設計模式中,我相信大多數程式猿最早接觸的設計模式就是單例模式啦,當然了我也不例外。單例模式應用起來應該是所有設計模式中最簡單的。單例模式雖然簡單,但是如果你去深深探究單例模式,會涉及到很多很多知識,我會繼續更新這篇文章的。單例模式在整個系統中就提供了一個對象,然後整個系統都去使用這一個對象,這就是單例的目的。

一、飽漢式單例:

public class Singleton {    
	    /**  
	     * 單例對象執行個體  
	     */    
	    private static Singleton instance = null;    
	    public static Singleton getInstance() {    
	        if (instance == null) {                     
	            instance = new Singleton();           
	        }    
	        return instance;    
	    }    
	}
           

二、餓漢式單例:

public class Singleton {    
		    /**  
		     * 單例對象執行個體  
		     */    
		    private static Singleton instance = new Singleton();    
		     
		   public static Singleton getInstance() {    
		        return instance;    
		    }    
		}
           

這兩種單例在實際的代碼中,往往是不能滿足要求的,這就需要我們根據自己的需求來改寫這些單例模式,

例如:如果建立的單例對象需要其他參數,這個時候,我們就需要這樣改寫:

public class Singleton {    
		    /**  
		     * 單例對象執行個體  
		     */    
		    private static Singleton instance = null;    
		     
		   public static Singleton  getInstance(Context context) {  
		        if (instance == null) {  
		        	instance = new Singleton(context);  
		        }  
		    return instance;  
		}
	}
           

例如: 資源共享情況下,必須滿足多線程的并發通路,這個時候,我們就應該這麼做:

public class Singleton {    
		    /**  
		     * 單例對象執行個體  
		     */    
		    private static Singleton instance = null;    
		     
		    public synchronized static Singleton getInstance() {    
		        if (instance == null) {    
		            instance = new Singleton();    
		        }    
		        return instance;    
		    }    
	}
           

其實無論什麼條件下,無論怎麼改變,都是這兩種單例模式的變種!!!!

繼續閱讀