设计模式1——单例
單例
http://www.iteye.com/topic/537563
3、單例模式有以下特點:?
- 單例類只能有一個實例;?
- 單例類必須自己創建自己的唯一的實例;?
- 單例類必須給所有其他對象提供這一實例;
- 私有構造方法,避免外部創建實例;
- 私有靜態實例;
- 靜態工廠方法,返回此單例類唯一的實例。
?
——————?私有靜態實例——java 語言機制的static保障了內存(具體來說是方法內存區)中只有一個引用。。! 這個非常關鍵!!!
Rust
?
?
單例的作用?
某個創建很耗資源、時間的類,
整個項目運行中只能有一個實例存在的類
?
同時應用場景有單線程、多線程
?
如果是多線程,還要注意其線程安全的問題。
餓漢式的實現方式雖然貌似開銷比較大,但是不會出現線程安全的問題,也是解決線程安全的單例實現的有效方式。 ——?使用static關鍵字修飾的變量只有在第一次使用的時候才會被初始化,而且一個類里面static的成員變量只會有一份,這樣就保證了無論多少個線程同時訪問,所拿到的Resource對象都是同一個
如果是懶漢式模式—— 則需要考慮線程安全,加synchronized 或其他。。
?
總結:
單線程的單例模式很簡單,注意那么幾個點即可,一般誰都會寫。
多線程情況下,相對單線程要復雜很多,就要緊緊的盯住那個getInstance的靜態方法了!
?
總結
- 上一篇: tomcat 7连接池配置与使用
- 下一篇: C的隐式类型转换