單例設計模式

2021-07-25 03:16:25 字數 1486 閱讀 8040

單例模式就是用來建立獨一無二的,只有乙個例項的物件的模式。

有些物件我們只需要乙個,如果製造出多個例項,就會產生許多問題。比如程式行為異常,資源使用過度。

分為餓漢模式和懶漢模式

餓漢模式:

package com.tom.singleton;

/* * 單例設計模式學習:

* 1、設計模式:一套被反覆使用、多數人知曉的、經過分類編目的、**設計經驗的總結。

* 2、目的:可重用**,讓**更容易被他人理解、保證**可靠性。

* 3、單例模式:保證整個應用中某個例項有且只有乙個。

* 4、舉例:配置檔案、工具類、執行緒池、快取、日誌物件等

* 5、餓漢模式,懶漢模式

*/public class singletondemo

//建立類的唯一例項,private static ,static修飾為類所有,類載入就創立,無論是否需要。

private static singletondemo instance = new singletondemo();

//提供乙個用於獲取例項的方法,此方法為例項(物件)方法,不是類方法,新增static

public static singletondemo getinstance()

}

懶漢模式:

package com.tom.singleton;

/* * 懶漢模式

*/public class singleton

//宣告類的唯一例項,試用private,static修飾

private static singleton instance;

//提供乙個用於獲取例項的方法,使用public static修飾

public static singleton getinstance()

return instance;

}}

區別:餓漢模式的特點是載入比較慢,但執行時獲取物件的速度比較快,執行緒安全。

懶漢模式的特點是載入快,獲取慢,執行緒不安全。

如何解決餓漢可能造成資源的浪費和懶漢的執行緒不安全問題?

可以利用同步(synchronized)方法,但是同步解決了執行緒安全問題,隨之而來只有第一次需要同步,當已經有建立的例項時,就不需要同步了,所以我們採用雙重檢查加鎖的方法來解決同步的弊端:

private volatile static singleton instance;

//提供乙個用於獲取例項的方法,使用public static修飾

public static singleton getinstance()

}}

return instance;

}

這樣就能保證只執行一次同步了。

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

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

設計模式 單例設計模式

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

設計模式 單例設計模式

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