對單例的認知

2021-08-10 03:06:47 字數 1037 閱讀 2361

最近看到了 單例 這塊,簡單記錄下

單例就是該類只能返回乙個例項。

單例所具備的特點:

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...