設計模式 1 單例模式

2021-10-01 01:55:31 字數 1588 閱讀 3848

建立型模式就是幫助我們建一些相關的物件,單例模式就是其中的一種。

單例模式:就是乙個類只有乙個物件,並且提供乙個方法訪問這個物件。

單例只需要生成乙個例項,所以記憶體占用和系統開銷比較小,對於一些資源共享和初始化比較慢的資源處理時候,我們可以用單例模式來做。

餓漢式的特點:執行緒安全,呼叫效率高。缺陷是不能延時載入。一般希望延時載入。餓漢式一般實現要注意三點,第一要私有構造器,把構造器私有了,別人就訪問不了,只能自己訪問,第二提供乙個屬性,這個屬性是靜態的,並且也是私有的,靜態屬性屬於類,第三提供提供乙個開放的方法,別人只能從這個開放的方法取物件,不管訪問幾次都是這個物件。

練習

package com.cb.study01;

/* * 測試餓漢式單例模式

*/public class singletondemo01

//方法沒有同步,呼叫效率高

public static singletondemo01 getinstance()

}

什麼要叫它餓漢式,餓漢的特點很餓,一上來就要吃東西,當我類載入器載入類的時候,載入這個物件就把這物件 new出來,不管後面要不要有沒有使用這個類,上來就建立好。如果後面沒有用這個物件那就白載入了,所以我們希望延時載入,就是不用的時候不載入,用的時候在載入。

為什麼說它是執行緒安全,這個方法前面不需要加synchronized,類在初始化的時候立即載入,它是乙個天然執行緒安全,不需要加synchronized就不用等,它就呼叫效率高。

懶漢式:它和餓漢式不一樣的是,它沒有初始化,當呼叫方法的在去new這個類,當第二次的就存在這個物件,就可以直接返回這個物件,因為可能存在多個執行緒呼叫,就需要加synchronized同步,避免第一次呼叫這個方法產生多個物件,就違反建立單例模式的初衷了,所以要加synchronized。加了synchronized併發效率就低,每

為什麼叫懶漢式,比如昨天要交作業,就等到要交作業的時候在去趕作業,就是懶漢,這個物件要用的在去呼叫,所以就加懶漢式。

練習:

package com.cb.study01;

/* * 測試懶漢式單例模式

*/public class singletondemo02

//方法同步,呼叫效率低

public synchronized static singletondemo02 getinstance()

return instance;

}}

設計模式1 單例模式

文章引用出處 singleton模式是最簡單最常用的設計模式。1,定義 確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個該類。2,單例模式優點 1 單例模式在記憶體中只有乙個例項,減少了記憶體的開支。2 單例模式只生成乙個例項模式,減少了系統效能的開銷。如當乙個物件的產生需要比較多的系統資...

設計模式1 單例模式

單例模式,利用工廠類只生產乙個例項或者有限個例項,比如乙個系統中只有乙個主機板,乙個顯示卡,但是有些系統中也可以存在多個,雙顯示卡,雙顯示器等等。這些在singleton module中都是可以定義的。當然我們也可以使用全域性的變數或者靜態類或者物件去做,但是單例模式的存在是有其優點的。public...

設計模式1 單例模式

保證乙個類只有乙個例項 即乙個物件,並且提供乙個訪問該例項的全域性訪問點 即類中有乙個公共的方法 方法的返回該類的物件。1.windows的任務管理器 無論開啟多少次都只能開啟乙個視窗 2.windows的 站 3.專案中的配置檔案 4.的計數器 5.日誌 6.連線池 8.spring的bean 預...