什麼是單例設計模式?
單例模式,是一種常用的軟體設計模式。它的核心思想是指,乙個類只允許產生乙個例項化物件。
單例設計模式實現要求:
1、構造方法私有化,保證在類的外部不能通過使用new關鍵字來例項化物件
2、在類的內部產生例項化物件,呼叫類的具體方法,使用private static 封裝
3、提供乙個getter()方法,返回該物件
具體實現
餓漢式單例模式——直接new的形式
餓漢式單例模式的優缺點://餓漢式單例
class singleton
//getter方法返回例項化物件
public static singleton getinstance()
//普通方法
public void print()
}public class test
}
優點:比較容易實現,不存在多執行緒安全問題
缺點:當類被載入時,就會初始化instance物件,並且一直占用記憶體空間,在一定程度多行會造成記憶體資源的浪費。
懶漢式單例模式:——用的時候再new
懶漢式單例模式的優缺點://懶漢式單例
class singleton
//getter方法中new,並返回物件
public static singleton getinstance()
return instance;
}//普通方法
public void print()
}public class test
}
優點:當類被載入時不會初始化instance物件,只有第一次呼叫getter方法時才會初始化instance並分配記憶體,在一定程度上節約了記憶體資源。
缺點:在多執行緒環境下是不安全的,不能保證單例模式的狀態。
執行緒安全的懶漢式單例:——保證了執行緒安全但是使用synchronized只有降低了效率
//執行緒安全的懶漢式單例
class singleton
//getter方法中new,並返回物件
//使用synchronized關鍵字,保證執行緒安全
public static synchronized singleton getinstance()
return instance;
}//普通方法
public void print()
}public class test
}
單例模式及其優缺點
單例模式分為飢漢模式和懶漢模式 在將單例模式的時候我覺得要先做乙個對比,我們建立乙個類,用普通的方法宣告兩個物件,輸出兩個物件的hashcode值,hashcode值不一樣說明這兩個物件儲存在不同的物理空間。如果hashcode一樣說明儲存在同乙個地方。package com.soufun.test...
單例模式優 缺點
1,例項控制 單例模式防止其它物件對自己的例項化,確保所有的物件都訪問乙個例項。2,伸縮性 因為由類自己來控制例項化程序,類就在改變例項化程序上有相應的伸縮性。單例模式的缺點 1,系統開銷。雖然這個系統開銷看起來很小,但是每次引用這個類例項的時候都要進行例項是否存在的檢查。這個問題可以通過靜態例項來...
單例模式優缺點
5.3.7 單例模式的優缺點 1 時間和空間 比較上面兩種寫法 懶漢式是典型的時間換空間,也就是每次獲取例項都會進行判斷,看是否需要建立例項,浪費判斷的時間。當然,如果一直沒有人使用的話,那就不會建立例項,則節約記憶體空間。餓漢式是典型的空間換時間,當類裝載的時候就會建立類例項,不管你用不用,先建立...