設計模式 單例模式

2021-09-03 02:17:16 字數 1099 閱讀 8245

單例模式顧名思義就是只存在乙個例項,在很多情況下我們不需要這個物件有多個例項,所以有了我們的單例模式。

這裡只列舉兩種單例模式

執行緒安全的餓漢模式

/**

* 執行緒安全的餓漢模式

*/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()方法所以我們需要這樣寫

/**

* 執行緒安全的餓漢模式

*/public class hungry implements serializable

public static final hungry newinstance()

/*** 當實現serializable介面後,序列化問題,反序列的時候jvm會呼叫這個方法,所以重新即可

* @return

*/private object readresolve()

}

單例還有很多種寫法,這裡不再一一枚舉,只列舉常見的2種普通的單例,我們需要了解的是這樣的乙個思想

設計模式 單例模式

單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...