android 單例模式

單例模式特色:android

一、一個類只能有一個實例安全

二、本身建立這個實例code

三、整個系統都要使用這個實例對象

單例模式的形式:get

一、餓漢式單例類it

public class Singleton {io

private Singleton(){}class

//在本身內部定義本身一個實例,是否是很奇怪?效率

//注意這是private 只供內部調用方法

private static Singleton instance = new Singleton();

//這裏提供了一個供外部訪問本class的靜態方法,能夠直接訪問

public static Singleton getInstance() {

return instance;

}

}

二、懶漢式單例類

private static Singleton instance = null;

public static synchronized Singleton getInstance() {

//這個方法比上面有所改進,不用每次都進行生成對象,只是第一次

//使用時生成實例,提升了效率!

if (instance==null)

instance=new Singleton();

return instance; }

}

第二中形式是lazy initialization,也就是說第一次調用時初始Singleton,之後就不用再生成了。

注意到lazy initialization形式中的synchronized,這個synchronized很重要,若是沒有synchronized,那麼使用getInstance()是有可能獲得多個Singleton實例。
通常來講第一種比較安全

 

三、比較常使用的是:

public class Singleton {

private volatile static Singleton singleton;

private Singleton(){}

public static Singleton getInstance(){

if(singleton==null){

synchronized(Singleton.class){

if(singleton==null){

singleton=new Singleton();

}

}

還能夠參考一下android的Activity加載模式:

一、singleTop

二、singleTask

三、singleInstance

相關文章
相關標籤/搜索