實現單例模式的幾種方法

2021-08-20 18:32:05 字數 870 閱讀 5826

public class singleclass 

public static singleclass getinstance()

}

2、懶漢式:類在被載入時不會被初始化,當第一次被使用時進行初始化,為保證單例,可以使用sychronized關鍵字確保執行緒安全,但是每次呼叫時都會同步。

public class lazysingleclass 

public static synchronized lazysingleclass getinstance()

return

instance;}

}

3、雙重檢查:當被使用時先判斷是否已經初始化,若是則直接返回,若沒有,同步初始化。

public class dclsingleclass 

public static dclsingleclass getinstance()}}

return

instance;}

}

4、靜態內部類方法:在類被載入的時候並不會初始化suppersingleclass,第一次呼叫getinstance時,初始化suppersingleclass類,因為被static修飾,jvm只為靜態變數分配一次位址空間。

這裡有個疑問,jvm在類載入的時候就會為靜態變數分配記憶體吧,那內部類裡面的靜態成員變數不會在類載入的時候被分配記憶體嗎?

public class suppersingleclass 

private

suppersingleclass()

public static suppersingleclass getinstance()

}

實現單例模式的幾種方法

單例模式 singleton pattern 是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。在 python 中,我們可以用多種方法來實現單例模式 其實,python 的模組就是天然的單例模式,因為模組...

單例模式的實現的幾種方法

餓漢式的特點 執行緒安全,呼叫效率高,但是不能延遲載入 實現原始碼 public class singlecase public static singlecase getdl 懶漢式的特點 執行緒安全,呼叫效率不高,但是能延遲載入 實現原始碼 public class lazy 加入同步塊,防止併...

用python實現單例模式的幾種方法

使用 new 方法,python自省 class singleton object def new cls,args,kwargs 如果沒有隱變數 instance就呼叫 new 乙個,python自省 if not hasattr cls,instance orig super singleton...