Android 常用單例模式簡單介紹

2021-08-14 06:34:35 字數 1310 閱讀 6434

/**

* 方式一

* instance 單例初始值是null,還未構建,則構建單例物件並返回;是懶漢模式 - 執行緒不安全

* instance 單例物件一開始就被new 出來,主動構建,則不需要判空操作;是餓漢模式 - 執行緒安全

*/private zpdanlidemo(){}

private static zpdanlidemo instance = null;

public static zpdanlidemo getinstance()

return instance;

}

注:這種方式是執行緒不安全的,具體原因可以看注釋描述。

懶漢與餓漢兩種單例模式總是傻傻分不清,應用與面試的時候要多注意。

/**

* 方式二

*/private zpdanlidemo(){}

// volatile 物件new的時候,jvm執行順序保證正常執行

private volatile static zpdanlidemo instance = null;

public static zpdanlidemo getinstance() }}

return instance;

}

注:這種方式是執行緒安全

/**

* 方式三 靜態內部類實現單例模式

* 從外部是無法訪問靜態內部類lazyholder,只有當呼叫getinstance方法的時候,才能得到單例物件。

* instance 物件初始化的時機並不是在單例類zpdanlidemo被載入的時候,而是在呼叫getinstance方法,使得靜態內部類lazyholder被載入的時候。

* 因此這種實現方式是利用classloader的載入機制來實現懶載入,並保證構建單例的執行緒安全。

*/private zpdanlidemo(){}

private static class lazyholder

public static zpdanlidemo getinstance()

注:執行緒安全

使用靜態內部類構建單例,事件比較靠譜的一件事兒。個人喜好,是比較喜歡用這種方式。

使用反射機制打破單例

/**

* 利用反射打破單例

* 使用列舉可以防止反射構建

*/private void getdanli() catch (nosuchmethodexception e)

}

Android單例模式

單例模式singleton 應用場合 有些物件只需要乙個就足夠了,如古代皇帝 老婆 作用 保證整個應用程式中某個例項有且只有乙個 型別 餓漢模式 懶漢模式 public class singleton 2.建立類的唯一例項,使用private static修飾 private static sing...

Android單例模式

參考部落格 1 懶漢模式 每一次呼叫都要對方法進行加鎖,要維護鎖會導致效能損耗,其實不需要每次進入方法都加鎖,只需要第一次進入的時候防止多個執行緒產生多個單例即可。所以只需要在new singleton處加鎖即可,由此引出第二種模式,雙重鎖定模式。2 雙重鎖定模式 第一次生成完例項以後就直接返回例項...

Android 設計模式 單例模式

有哪些單例模式 實現方式1 雙重確認 double check lock dcl class singleton public void dosomething public static singleton getinstance return sinstande 為了減少重複 可用泛型來優化 抽...