創建型開發模式-單例模式

前言:前幾天,老師上課講解了單例模式,想了想理解還不夠深入,寫篇文章整理一下,希望有更深入的理解。


本人之前在學習oc,java也只是上課的時候學的,平時也沒有特別的去學習,所以本文由理解錯或者寫錯的地方請諒解,也歡迎相互交流,學習。

單例模式

特點:

1.單例類只能有一個實例。

2.單例類的實例只能由自身創建。

3.這個實例必須被全體對象所訪問。

通俗的講,單例類只能實例化一次,之后再實例化也不會創建新的實例,還是之前創建的實例。那怎樣的程序是用單例模式寫的呢?比如說 Windows里的任務管理器,它只能打開一個,不能打開多個,因為只能實例化一個對象,創建一個窗口。(都是老師說的!~~)


java中單例模式的幾種寫法


1.簡單的寫法

public class Singleton{

? ? ? ? ? private static?Singleton instance;

? ? ? ? ? private Singleton(){}

? ? ? ? ? public static Singleton getInstance(){

? ? ? ? ? ? ? ? ? ?if(instance = null){

? ? ? ? ? ? ? ? ? ? ? ? instance = new Singleton();

? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? return instance;

? ? ? ? ? } ??

} ? ??

這種是老師課上講的,后來我參考了些資料,發現這種寫法是不安全的,線程不安全,所以不是很推薦這種寫法。但是這種寫法有一個好處可以lazy loading(延遲加載) ,什么是延遲加載,就是類的實例化并不是在類裝載的時候loading的,而是在調用getInstance的時候loading的,意在需要loading的時候loading。

暫時寫這么多。。日后補充~~~~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容