最近看到了 單例 這塊,簡單記錄下
單例就是該類只能返回乙個例項。
單例所具備的特點:
1.私有化的建構函式
2.私有的靜態的全域性變數
3.公有的靜態的方法
單例分為:懶漢式、餓漢式和雙層鎖式
餓漢式
::先初始化物件 single類一進記憶體,就已經建立好了物件
public class singleton1 ;
private staticsingleton1 single = new singleton1();
public static singleton1getinstance() }
懶漢式:物件是方法被呼叫時,才初始化,也叫做物件的延遲載入
single
類進記憶體,物件還沒有存在,只有呼叫了getinstance方法時,才建立物件
public class singleton2
private staticsingleton2 single=null;
public tatic singleton2getinstance()
return single; }
}執行緒安全:
public class singleton3
private static singleton3 single ;
public static singleton3 getinstance() }
}return single; }
}通過雙重判斷來保證單列設計模式在多執行緒中的安全性,
並且它在效能方面提高了很多。
synchronized在方法上加鎖(同步鎖)
synchronized在**塊內部加鎖 (同步**塊)
synchronized(同步鎖)
那麼使用synchronized如何解決執行緒安全的問題?
1.synchronized在方法上加鎖
2.synchronized在**塊內部加鎖
對單例的理解
在objective c中要實現乙個單例類,至少需要做以下四個步驟 1 為單例物件實現乙個靜態例項,並初始化,然後設定為nil static student st nil 2 實現乙個例項構造方法檢查上面宣告的靜態例項是否為nil,如果為nil就新建並返回乙個本類的例項,student sharei...
android 程式設計師認知 單例模式
class single public static single getinstance 為什麼方法是靜態的 不能new物件卻想呼叫類中方法,方法必然是靜態的,靜態方法只能呼叫靜態成員,所以物件也是靜態的。為什麼物件的訪問修飾符是private,不能是public 嗎?不能,如果訪問修飾符是pub...
對單例模式的理解
單例模式的三個特點 1 構造方法私有化 2 例項化的變數引用私有化 3 獲取例項的方法共有 什麼是單例 確保這個類在記憶體中只會存在乙個物件,而且自行例項化並向整個應用系統提供這個例項。應用的場景 建立乙個物件會消耗過多的資源,比如訪問io和資料庫 有哪幾種方式 推薦用靜態內部類或加了volatil...