java單例模式

2021-08-13 06:46:18 字數 1044 閱讀 1718

寫法一(餓漢式):

public class test              

public static test getinstance()

}

寫法二(懶漢式,延遲載入方式)    

public class test              

public static test getinstance()

return test;

}

}

對於餓漢式,當類被載入的時候,已經建立好了乙個靜態物件,因此,是執行緒安全的,但缺點是在這個物件還沒被使用的時候就已經被建立出來了。

對於懶漢式,缺點是非執行緒安全的。例如當第乙個執行緒執行到判斷語句if(test == null)時,第二個執行緒執行判斷語句if(test == null),接著第乙個執行緒執行語句test = new test(),第二個執行緒也執行test = new test(),在這種多執行緒環境下,可能會建立出兩個物件。當然這種寫法的優點是按需建立物件,只有物件被使用的時候才會被建立。

單例模式的目的:保證乙個類的物件的唯一性

單例模式的應用場景:

例如多個程式都要使用乙個配置檔案中的資料,而且要實現資料的共享和交換。必須要將多個資料封裝到乙個物件中,而且多個程式操作的是同乙個物件。也就是說要保證這個配置檔案物件的唯一性。

乙個類只要提供建構函式,就可以產生多個物件,數量不可控。那麼如何才能實現單例模式的功能呢?

解決方法:不讓其他程式建立物件,自己在本類中建立物件(數量可控),對外提供訪問方式。

1、直接private化建構函式

2、直接在本類中new乙個物件。即可採用private方式,也可採用public方式。當採用public時,可以通過 test test = test.test來獲取物件,也可以通過getinstance方法來獲取物件。若是採用private,則只能通過getinstance方法來獲取物件。

3、給其他程式提供訪問方式(getinstance方法)

java單例模式

第一種方法 public class singleton private static singleton singleton new singleton public static singleton getinstance 第二種方法 public class singleton private...

Java 單例模式

單例模式特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。一 餓漢式單例 基於classloder機制避免了多執行緒的同步問題,使用較多 public class singleton 這裡提供了乙個供外部訪問本class的靜態方法,可...

Java單例模式

單例模式的意圖是為了確保乙個類有且僅有乙個例項,並為它提供乙個全域性訪問點。單例模式通過隱藏建構函式,提供物件建立的唯一入口點,從而將類的職責集中在類的單個例項中。design patterns一書中把單例模式歸類為 建立型 模式,意圖是在表明單例物件承擔了其他物件所要依賴的職責。單例模式的優點 在...