單例模式的定義:一個類就有一個實例對象,而且自行實例化,并向整個系統提供這個實例。
單例模式根據實例化對象的時機不同分為兩種:餓漢式單例、懶漢式單例。
餓漢式單例:
public class Singleon{ PRivate static Singleon singleon = new Singleon(); private Singleon(){} pulic static Singleon getInstance(){ return singleon; }}懶漢式單例:
public class Singleon{ private static Singleon singleon = null; private Singleon(){} public static synchronized Singleon getInstance(){ //加上synchronized 純粹就是為了線程安全,這里我就不多說了,自己接觸的不多,沒有發言權 if(singleon==null){ singleon = new Singleon(); } return singleon; }}兩者的功能是一樣的,只是實例化對象的時機不一樣,餓漢式單例,實在類被加載的時候實例化對象;懶漢式單例,是在調用方法的時候創建實例化對象;
單例模式的優點:
1、在內存中,只有一個對象,節省內存空間
2、避免頻繁的創建銷毀對象,可以提高性能
3、避免對共享資源的多重利用
4、可以全局訪問
單例模式的使用場景:
1、需要頻繁實例化然后銷毀的對象
2、創建對象時耗時過多或者耗資源過多,但又經常用到的對象
3、用作工具類對象
4、頻繁訪問數據庫或者文件的對象
5、還有其它的吧,應該,我還沒用到的場合。。。。。。。
新聞熱點
疑難解答