這是乙個設計模式,乙個模式存在,那肯定有解決現實問題的能力多個程式都在操作同乙個配置檔案時,需要程式a操作後的結果,程式b知道,並繼續基於程式a操作後的結果進行操作。前提是資料都儲存在配置檔案物件中,要求程式a程式b操作的配置檔案是同乙個物件。所以,單例模式解決的問題是要保證乙個類的物件在記憶體中的唯一性,就是乙個類的物件在記憶體中有且只有乙個,記憶體中只能建立乙個物件
要限制其他程式不能隨便建立這個類的物件,保證記憶體中只有乙個物件。
建立物件是要呼叫建構函式的,那麼只要將這個類的建構函式私有了,不讓其他程式訪問,其他程式就無法建立物件,但當私有建構函式後,其他程式無法建立物件,如果需要使用物件,可以在本類中建立自己的物件,對外提供獲取本類物件的方法就可以了。
public
class
single
//建立本類物件
private
static single s =
newsingle()
;//對外提供獲取本來物件方法
public
static single getinstance()
}
注意問題:由於外界無法建立single物件,沒有物件,那就無法呼叫getinstance方法,這時需要將getinstance方法靜態化,這樣外界就可以通過類名直接呼叫該方法。
public
class
single
//在本類中建立本類物件
private
static single instance = null;
//對外提供靜態訪問方法,獲取本類例項物件
public
static single getinstance()
return instance;}}
class
singledemo
}
懶漢模式,它的特點是執行時獲得物件的速度比較慢,但載入類的時候比較快。它在整個應用的生命週期只有一部分時間在占用資源。
餓漢模式,它的特點是載入類的時候比較慢,但執行時獲得物件的速度比較快。它從載入到應用結束會一直占用資源。
這兩種模式對於初始化較快,占用資源少的輕量級物件來說,沒有多大的效能差異,選擇懶漢式還是餓漢式都沒有問題。但是對於初始化慢,占用資源多的重量級物件來說,就會有比較明顯的差別了。所以,對重量級物件應用餓漢模式,類載入時速度慢,但執行時速度快;懶漢模式則與之相反,類載入時速度快,但執行 時第一次獲得物件的速度慢。
從使用者體驗的角度來說,我們應該首選餓漢模式。我們願意等待某個程式花較長的時間初始化,卻不喜歡在程式執行時等待太久,給人一種反應遲鈍的感覺,所以對於有重量級物件參與的單例模式,我們推薦使用餓漢模式。
單例模式應用場景
了解單例模式 單例模式實際應用場景。1.windows的task manager 任務管理器 就是很典型的單例模式 這個很熟悉吧 想想看,是不是呢,你能開啟兩個windows task manager嗎?2.windows的recycle bin 站 也是典型的單例應用。在整個系統執行過程中,站一直...
單例模式的應用場景
使用單例模式最核心的一點是體現了物件導向封裝特性中的 單一職責 和 物件自治 原則。很多時候我們要保證類的例項只有乙個。我們可能在自己的 中判斷需要的類的例項有無,無就new乙個。這樣看似不錯。問題是,你用到這個類的地方有n個,這樣你就需要n個判斷。為什麼不把這個職責交給類本身呢?然後讓類提供乙個介...
單例模式的應用場景
單例模式是乙個非常重要的設計模式,下面是單例模式的經常使用場景 1 專案中的配置檔案,如資料庫的連線資訊等,通常會用單例物件讀取並儲存 2 hibernate的sessionfactory應作為單例使用 3 servlet是典型的單例物件,這個物件是由tomcat伺服器建立並維護的 4 spring...