android常用設計模式之單例模式

zyl409214686發表於2018-01-09

定義:單例模式是一種物件建立模式,用於產生一個物件的具體例項,他可以確保系統中一個類只產生一個例項。

單例模式類圖:

單例類圖.jpg
類圖解釋:其中包含兩個角色,單例類(Singleton)和使用者(SingletionMain) 該類圖解釋為:單例類為一個自身關聯,使用者對單例類為一個單向關聯(引用)

優點:
  • 對於頻繁使用的物件,可以省略穿件物件所花費的時間,這對於那些重量級物件而言,是非常可觀的一筆系統開銷。
  • 由於new操作的次數減少,因而對系統記憶體的使用頻率也會降低,這將減輕GC壓力,縮短GC停頓時間。
實現方式:

使用靜態內部類的方式實現單例,既可以做到延遲載入,也不必要使用同步關鍵字,是一種比較完善的實現。

public class StaticSingleton {
    private StaticSingleton (){}

    private static class SingletonHolder{
        private static Singleton instance = new Singleton();
    }

    public static StaticSingleton getInstance(){
        return SingletonHolder.instance;
    }
}
複製程式碼

#####原理: 在這個實現中,單例模式使用內部類來維護單例的實力,當StaticSingleton被載入時,其內部類並不會被初始化,故可以確保當StaticSingleton類被JVM載入時,不會初始化單例類,而當getInstance()方法被呼叫時,才會載入SingletonHolder,從而初始化instance。同時,由於例項的建立是在類載入時完成,故天生對多執行緒友好,getInstance()方法也不需要使用同步關鍵字。因此,這種實現方式同時兼備以上兩種實現優點。

github

https://github.com/zyl409214686/DesignPatterns

相關文章