單例設計模式

2021-07-27 07:01:24 字數 1360 閱讀 9425

首先,我們來看一下兩種單例模式,懶漢式和餓漢式單例

懶漢式單例設計模式:

public class singleton 

public static singleton getinfo()

return info; }

}

這種方法是執行緒不安全的,可使用以下方法優化:

public class singleton 

public static singleton getinfo()

}}return info;

}}

餓漢式單例模式本身就是安全的,**如下:

public class singletone 

private static singletone s1 = new singletone();

public static singletone getinfo()

}

單例設計模式也可以使用內部類來實現,

實現了執行緒安全,又避免了同步帶來的效能影響。

public class easysinglton 

private static class singlton

public static final easysinglton info ()

}

用於測試的類:

public class test 

}

餓漢式和懶漢式區別

從名字上來說,餓漢和懶漢,

餓漢就是類一旦載入,就把單例初始化完成,保證getinstance的時候,單例是已經存在的了,

而懶漢比較懶,只有當呼叫getinstance的時候,才回去初始化這個單例。

另外從以下兩點再區分以下這兩種方式:

1、執行緒安全:

餓漢式天生就是執行緒安全的,可以直接用於多執行緒而不會出現問題,

懶漢式本身是非執行緒安全的,為了實現執行緒安全有幾種寫法,分別是上面的1、2、3,這三種實現在資源載入和效能方面有些區別。

2、資源載入和效能:

餓漢式在類建立的同時就例項化乙個靜態物件出來,不管之後會不會使用這個單例,都會佔據一定的記憶體,但是相應的,在第一次呼叫時速度也會更快,因為其資源已經初始化完成,

而懶漢式顧名思義,會延遲載入,在第一次使用該單例的時候才會例項化物件出來,第一次呼叫時要做初始化,如果要做的工作比較多,效能上會有些延遲,之後就和餓漢式一樣了。

最後特別推薦使用內部類來建立單例模式,既可以解決懶漢式執行緒不安全的情況和同步帶來的效能影響,又可以避免餓漢式造成資源的浪費。

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...

設計模式 單例設計模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...