單例模式:單例模式的意思就是只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。
單例模式有三種:懶漢式單例,餓漢式單例,登記式單例。
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...
單例模式的三種實現方法
在實際開發中,我們往往需要乙個類只能被例項化一次,如果有多個物件的話,就會導致混亂情況發生。優點 一 例項控制 單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。二 靈活性 因為類控制了例項化過程,所以類可以靈活更改例項化過程。一 開銷 雖然數量很少,但如果每次物件...