單例模式顧名思義就是只存在乙個例項,在很多情況下我們不需要這個物件有多個例項,所以有了我們的單例模式。
這裡只列舉兩種單例模式
執行緒安全的餓漢模式
懶漢模式/**
* 執行緒安全的餓漢模式
*/public class hungry
public static final hungry newinstance()
}
懶漢模式如果需要執行緒安全那麼需要加/**
* 懶漢模式(執行緒不安全)
*/public class lazy
public static lazy newinstance()
return lazy;
}}
synchronized
這裡加鎖對效能的影響是比較大的,可以考慮內部類去改進,這裡不再演示/**
* 懶漢模式(執行緒安全)
*/public class lazytwo
public synchronized static lazytwo newinstance()
return lazy;
}}
當單例遇到序列化的問題的時候,因為當物件實現了
serializable介面以後jvm會呼叫readresolve()方法所以我們需要這樣寫
單例還有很多種寫法,這裡不再一一枚舉,只列舉常見的2種普通的單例,我們需要了解的是這樣的乙個思想/**
* 執行緒安全的餓漢模式
*/public class hungry implements serializable
public static final hungry newinstance()
/*** 當實現serializable介面後,序列化問題,反序列的時候jvm會呼叫這個方法,所以重新即可
* @return
*/private object readresolve()
}
設計模式 單例模式
單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...
設計模式 單例模式
class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...
設計模式 單例模式
單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...