通過私有構造方法來強化單例屬性

2021-09-13 13:41:16 字數 836 閱讀 9093

這是乙個簡單的單例類:

public class singleton 

public static singleton getinstance()

}

為了避免上述記憶體浪費的缺點,將寫法改進:

public class singleton 

public static singleton getinstance()

return singleton;

}}

為了解決執行緒安全的問題,可以給靜態方法加鎖:

public class singleton 

public static synchronized singleton getinstance()

return singleton;

}}

採用雙重檢查的方法可以很好地優化:

public class singleton 

public static singleton getinstance() }}

return singleton;

}}

靜態內部類:

public class singleton 

private static class singletoninstance

public static singleton getinstance()

}

使用列舉(不常用):

public enum singleton

第4條 通過私有構造器來強化不可例項化能力

像有些類裡面可能只包含靜態方法 屬性和靜態域的類時,而在缺少顯示的構造器的時候,編譯器會提供乙個無參的預設構造器,由於例項化它們並沒有任何意義,所以顯然沒有必要,這時候我們可以提供乙個私有的構造器,這樣就不被例項化了,當然,我們最後在構造器中丟擲異常來進行說明下,或者加條注釋。public clas...

構造方法私有化與單例模式

單例模式 乙個類只有乙個例項化的物件,單例模式實現的核心是構造方法私有化,這樣就不能在類的外部建立該類的例項化物件,要想在類的外部使用構造方法私有化的類物件,只能在類的內部例項化乙個類物件,然後通過靜態方法返回該例項物件的引用,在外部進行呼叫。例如 建立乙個構造方法私有化的person類 publi...

構造方法私有化 單例模式 Singleton

因程式需要,有時我們只需要某個類同時保留乙個物件,不希望有更多物件,此時,我們則應考慮單例模式的設計。例子 在日常生活中,有的時候為了出現二義性,我們把很多事情安排到乙個人來操作。就像我們想要得到特供的茅台酒的話,我們平常人是不可能弄到的。那必須找到這個的負責人,那麼不管誰都會找這個負責人才可以。這...