單例模式 基於headfirst設計模式的總結

2021-10-10 22:40:40 字數 941 閱讀 2122

1.經典的單例模式——懶漢式

public

class

singleton

public

static singleton getinstance()

return uniqueinstance;

}// other useful methods here

}

主要的就是3步

1.建立靜態私有變數

2.建立私有構造方法

3.建立靜態方法返回物件

存在問題:執行緒不安全

2.餓漢式

public

class

singleton

public

static singleton getinstance()

}

執行緒安全,但是每次優先建立了物件消耗了多餘的記憶體

3.加入同步**塊

public

class

singleton

public

static

synchronized singleton getinstance()

return uniqueinstance;

}// other useful methods here

}

影響了效能

4.雙重檢測法

public

class

singleton

public

static singleton getinstance()

}}return uniqueinstance;

}}

用volatile來保證可見性

雙重檢測確保在物件為空的時候才建立物件,這樣就可以減少每次對同步**塊的判斷。

HeadFirst設計模式 單例模式

單例模式 我們首先提出的疑問是什麼是單例模式,為什麼需要單例模式?比如有的時候我們對一些物件只用乙個,比如執行緒池。快取等等。如何保障乙個例項的執行呢?或許我們可以使用全域性變數,不過全域性變數只能提供全域性訪問,不能確保只有乙個例項。全域性變數一旦多了,通常有的時候我們自己都忘記了。這點深有感觸。...

Head First設計模式 單例模式

單例模式是所有設計模式中最簡單的模式,也是我們平常經常用到的,單例模式通常被我們應用於執行緒池 快取操作 佇列操作等等。單例模式旨在建立乙個類的例項,建立乙個類的例項我們用全域性靜態變數或者約定也能辦到單例的作用,為什麼我們要用單例模式?接下來我們就從如何形成單例模式,單例模式建立的過程來講解。我們...

Head First 設計模式 5 單例模式

單例模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。用到的設計原則 1 封裝變化 2 組合優於整合 3 針對介面變成而不是針對實現 4 為互動物件之間的松耦合設計而努力 5 類應該對擴充套件開放,對修改關閉 6 依賴抽象,而不是依賴具體類 最簡單的單例 class singleton publ...