單例設計模式

2021-06-26 13:04:43 字數 1257 閱讀 4167

定義:乙個類有且僅有乙個例項,並且自行例項化向整個系統提供。

應用:android中有很多系統級別的全域性變數,如時間,輸入法,賬戶,狀態列等等,android中對這些都直接或者有些間接用到了單例模式。

當乙個類物件需要在系統中只存在乙個唯一的例項時,使用該模式最為快捷有效。例如windows

中的任務管理器使用的就是該種機制。如果不對視窗物件進行唯一化設定,那麼多次開啟任務管理器,就會彈出多個視窗。如果這些視窗顯示內容完全一致,則這些重複物件是對系統記憶體的一種浪費;如果不一致,則意味著系統在某一瞬間存在多種狀態,與實踐不符,同時也會給使用者帶來誤解。所以該機制的存在是非常必要的。

3個要點:①某個類只能有乙個例項;②它必須自行建立這個例項;③它必須自行向整個系統提供這個例項。

通過以上3個要點可以總結出該設計模式的一般步驟:①將該類的建構函式私有化;②在該類中建立乙個私有的、靜態的本類物件;③提供乙個非私有的、靜態的、本類型別的獲取方法,返回第二步中建立的本類物件。

根據例項化物件時機的不同,可以將單例設計模式分為兩種:餓漢式和懶漢式。

餓漢式:在類剛被載入時就例項化乙個物件(在實際開發較為常用)。

class single

private static single s = new single();

public static single getinstance()

//類中其他變數以及方法;

}

懶漢式:在呼叫獲取物件方法時,物件才會被例項化,即物件延遲載入。

class single

private static single s = null;

public static synchronized single getinstance()//為了程式在執行過程中的安全,需要加鎖,但執行效率較慢。

//類中其他變數以及方法;

}

由於每次代用都需要判斷一下鎖,執行效率較慢,所以可以將以上**加以改進。

class single

private static single s = null;

public static single getinstance()

}return s;

} //類中其他變數以及方法;

}

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

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

設計模式 單例設計模式

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

設計模式 單例設計模式

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