Android中的單例模式

2021-09-17 05:24:42 字數 1121 閱讀 9942

單例模式(singleton pattern),是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的乙個類只有乙個例項。即乙個類只有乙個物件例項。

這裡通過借鑑學習其他大佬們的經驗,總結出了六種實現方法。下面是具體每一種實現方式和優缺點。

懶漢式,顧名思義,就是懶載入,可以在需要的時候再去載入。

優點:可以實現延遲載入,在類初次載入的時候,只是宣告靜態物件,不會自動初始化類物件。

缺點:執行緒不安全,多執行緒情況下無法保證唯一的例項。

優點:懶載入,使用了synchronized同步鎖,能夠保證執行緒安全。

缺點:每次都要同步,效能低。

優點:執行緒安全。類載入的時候初始化靜態變數,只會執行一次。

缺點:不能懶載入,用不用都會去初始化例項。

優點:執行緒安全,懶載入。

問題:初始化類物件,是非原子性的操作,在jvm中會分幾步執行,會存在指令重排序的問題。宣告物件的引用為volatile後,初始化中的重排序,在多執行緒中被禁止,就可以解決問題。volatile在jdk 1.5之後才能正確工作。

優點:運用類的載入機制來保證執行緒安全。內部類與外部類沒有繫結關係,只有外部類呼叫的時候才會載入,所以能做到懶載入。是一種較為推薦的實現方式。

優點:更加簡潔,無償提供了序列化機制,絕對防止多次例項化,即使是在面對複雜序列化或者反射攻擊的時候。

Android單例模式

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

Android單例模式

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

Android原始碼中的單例模式

前言在android系統中,我們經常會通過context獲取系統級別的服務,如windowsmanager,activitymanagerservice等,更常用的是乙個layoutinflater的類,這些服務會在合適的時候以單例的形式註冊在系統中,在我們需要的時候就通過context的getsy...