在非常多設計模式中。我相信大多數程式員最早接觸的設計模式就是單例模式啦,當然了我也不例外。
單例模式應用起來應該是全部設計模式中最簡單的。單例模式盡管簡單,可是假設你去深深探究單例模式,會涉及到非常多非常多知識。我會繼續更新這篇文章的。單例模式在整個系統中就提供了一個對象,然後整個系統都去使用這一個對象,這就是單例的目的。
一、飽漢式單例:
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;
}
}
事實上不管什麼條件下,不管怎麼改變。都是這兩種單例模式的變種!
!!。