什麼是單例模式?
就是自始至終只有乙個例項,不管new多少次物件,他們都指向同乙個引用。保證整個應用中某個例項有且只能有乙個。
比如古代只能有乙個皇帝。
一些物件我們只需要乙個,比如:配置檔案、工具類、執行緒池、快取、日誌物件等。
如果創作出多個例項,就會導致很多問題,比如占用過多資源,不一致的結果等。
單例模式的實現有兩種方式:懶漢模式和餓漢模式
餓漢模式實現如下:
public class singleton
//建立乙個私有的物件
private static singleton instance=new singleton();
//其他類中只能通過這個public的getinstance()方法獲得例項。
public static singleton getinstance()
}
懶漢模式實現如下:
public class singleton
//宣告乙個私有的物件,但是不建立其實例物件
private static singleton instance;
//其他類中只能通過這個public的getinstance()方法獲得例項。
public static singleton getinstance()
return instance;
} }
兩者的區別:
餓漢模式:特點是載入類時比較慢,但是執行時獲取物件的速度比較快,執行緒安全
懶漢模式:特點是載入類時比較快,但是執行時獲取物件的速度比較慢,執行緒不安全
單例模式(餓漢模式 懶漢模式)
餓漢單例模式 通過單例模式可以保證系統中,應用該模式的類乙個類只有乙個例項 即乙個類只有乙個物件例項 並提供乙個訪問它的全域性訪問點,該例項被所有程式模組共享。設計模式 一書中給出了一種很不錯的實現,定義乙個單例類,使用類的私有靜態指標變數指向類的唯一例項,並用乙個公有的靜態方法獲取該例項。分點表述...
單例模式 餓漢模式 懶漢模式
構造方法私有化 靜態屬性指向例項 public static的 getinstance方法,返回第二步的靜態屬性 餓漢式是立即載入的方式,無論是否會用到這個物件,都會載入。如果在構造方法裡寫了效能消耗較大,佔時較久的 比如建立與資料庫的連線,那麼就會在啟動的時候感覺稍微有些卡頓。懶漢式,是延遲載入的...
單例設計模式(餓漢模式與懶漢模式)
1 什麼時候用到 多程式讀取乙個配置檔案時,建議配置檔案封裝成物件。會方便操作其中資料,又要保證多個程式讀到的是同乙個配置檔案物件,就需要該配置檔案物件在記憶體中是唯一的。2.本質 保證乙個類在記憶體中的物件唯一性。3 思想 a 不讓其他程式建立該類物件。b 在本類中建立乙個本類物件。c 對外提供方...