單例模式的三種實現 以及各自的優缺點

2021-09-20 09:29:52 字數 758 閱讀 4929

單例模式:單例模式的意思就是只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。

單例模式有三種:懶漢式單例,餓漢式單例,登記式單例。

1.懶漢式單例

public class singleton  //此類不能被例項化

public static synchronized singleton getinstance()

return singleton;}}

優點:第一次呼叫才初始化,避免記憶體浪費。

缺點:必須加鎖synchronized 才能保證單例,(如果兩個執行緒同時呼叫getinstance方法,會chuxia)但加鎖會影響效率。

2.餓漢式單例

public class singleton  //此類不能被例項化

public static singleton getinstance()

}優點:沒有加鎖,執行效率會提高。

缺點:類載入時就初始化,浪費記憶體。

3.登記式模式(holder)

public class singleton //構造方法是私有的,從而避免外界利用構造方法直接建立任意多例項。

public static singleton getinstance()

private static class holder

}內部類只有在外部類被呼叫才載入,產生singleton例項;又不用加鎖。此模式有上述兩個模式的優點,遮蔽了它們的缺點,是最好的單例模式。

單例模式的三種實現 以及各自的優缺點

單例模式 單例模式的意思就是只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。單例模式有三種 懶漢式單例,餓漢式單例,登記式單例。1.懶漢式單例 public class singleton 此類不能被例項化 public static syn...

單例模式的三種實現

class singleton public static singleton getinstance 缺點 類每次使用時都會初始化靜態成員變數 呼叫該類的其它方法時也會初始化 浪費記憶體。class singleton public static singleton getinstance ret...

單例模式的三種實現方法

在實際開發中,我們往往需要乙個類只能被例項化一次,如果有多個物件的話,就會導致混亂情況發生。優點 一 例項控制 單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。二 靈活性 因為類控制了例項化過程,所以類可以靈活更改例項化過程。一 開銷 雖然數量很少,但如果每次物件...