先看看最簡單的
public class singleinstance
}
這個很明了,也確實會返回唯一的例項,但是如果我永遠都不會用到singleinstance.getinstance(),instance這個物件卻一直存在,占用了記憶體空間,浪費。
那就不先例項化
public class singleinstance
return instance;
}}
表面上,這個似乎是可行的。但是很顯然,在多執行緒併發環境中,可能會建立兩個instance,也有可能乙個執行緒拿到的instance是乙個不完整的例項。
好吧,那我加上同步總可以吧
public class singleinstance
return instance;
}}
這個雖然不會有記憶體上的浪費,但是有同步鎖住了整個class,會降低系統的效能。按照資料結構的說法,就是乙個提高了空間複雜度,乙個提高了時間複雜度。
最佳實踐
public class singleinstance
public static singleinstance getinstance()
}
這種holder做法保證了例項在用到的時候才會建立,而且建立的例項肯定是唯一的。
出處:
單例設計模式(餓漢單例設計模式 懶漢單例設計模式)
1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...
設計模式 單例設計模式
歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...
設計模式 單例設計模式
單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...