單例設計模式:
1.什麼是單例設計模式?
在整個應用中,我們保證我們所需要的例項只有乙個。
2.如何實現?
在類載入的階段就例項化乙個靜態變數例項,且將該類的建構函式設定為私有。則不能在建立其他的例項。這樣就能保證只有在整個應用中只有乙個例項。
1view codepublic
class
singletest 6//
用於獲取該例項的靜態方法
7public
static
singletest getinstance()
10 }
3.優化
在上述**中,在該類載入的階段,該例項就會被建立。然後在整個應用過程中,可能都不會用到該單例instance。該方法浪費記憶體。
通過在網上資料的查詢,了解到使用lazy loaded (延遲載入)。**如下
1在使用getinstance方式時才判斷是否為null,為null則初始化。public
class
singletest 67
public
static
singletest getinstance()
11return
instance;12}
13 }
4.在3中的**,雖然節省下了記憶體,但是在多執行緒併發下,會出現同時破壞單例模式。
執行緒a:執行完畢第8行的**後,判斷為null。然後切換時間片。
執行緒b:執行到完畢第8行的**後,判斷為null(因為執行緒a還沒有建立物件)。然後切換時間片。
執行緒a:建立乙個例項
執行緒b:建立乙個例項
所以會出現兩個例項,破壞單例模式。
這裡有乙個賊棒的**,來處理該情況
1這樣在獲取例項的時候,先判斷是不是為null,是為null,再進入裡面帶有鎖的判斷。加鎖保證只會有乙個例項被建立public
class
singletest 78
public
static
singletest getinstance()17}
18return
instance;19}
20 }
設計模式 單例設計模式
歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...
設計模式 單例設計模式
單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...
設計模式 單例設計模式
設計模式是對問題行之有效的解決方案,它其實是一種思想。單例設計模式 解決的問題 可以保證乙個類在記憶體中只能有乙個物件。比如多個程式使用相同的配置資訊物件時,就需要保證物件的唯一性 如何保證唯一性 1 不允許其他程式用new建立類物件 2 在該類中建立乙個本類例項 3 對外提供乙個方法讓其他程式可以...