C 簡而易懂教你設計模式,(1)單例模式

2022-02-14 07:50:24 字數 1159 閱讀 1370

1.對單例模式的理解

乙個類只被例項化一次,而且不能再被例項化

2.單例模式長什麼樣子

public classsingleton

'publish singleton getinstance()

else 

}}

為何是這樣子 首先建立乙個類  私有的構造方法導致外部不能對他進行例項化, 建立了乙個靜態的instance欄位和乙個getinstance的方法 , 只能通過getinstance方法獲取物件的例項,而當instance被例項化後請求返回的是同乙個物件

3.為什麼要用單例和單例模式的好處

(1)使用的時候確保了所有物件使用的都是同乙個例項

(2)當有需要使用這種情況的就可以避免重複的建立和銷毀物件,提高了效能

(3)可以特殊情況的使用  比如可以作為儲存

4.那又有什麼缺點呢

(1)好用當然擴充套件就難了 

5.實際工作中那些地方有用到呢

(1)新增日誌的應用,日誌應用的地方比較多,會減少頻繁的日誌物件的建立

(2)連線池的建立,比方建立httpclient不需要頻繁的建立

(3)等等

6.好了  大概了解單例模式了  下面就說一下多執行緒下的單例模式

上面我們那種建立單例的方式如果在多執行緒的情況下可能會建立多個例項,為什麼呢 多執行緒的東西 咱這就不細講了  可以私聊我

然後怎麼能避免多執行緒的情況下還是乙個單例模式呢  用到乙個叫鎖(lock)的東西  上**

public classsingleton

public staticsingleton getinstance()}}

returninstance;

}}

通過加鎖來控制當多個執行緒同時訪問的時候保證例項的唯一性

當然還有一種方式也是我認為最方便的一種方法

public classsingleton

}

利用靜態變數直接例項化物件

紀念一下 其實開通了部落格一直沒寫過 最近不太忙瞎寫寫

Headfirst java設計模式 單例模式

單例 件 模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。實現 1.懶漢式 通過延遲例項化實現的單例模式 使用synchronized處理多執行緒訪問,但是效能較差。public class lazyinstantiazesingleton public static synchronized...

C 設計模式 1 單例模式

最近在設計模式的一些內容,主要的參考書籍是 head first 設計模式 同時在學習過程中也檢視了很多中關於設計模式的一些文章的,在這裡記錄下我的一些學習筆記,一是為了幫助我更深入地理解設計模式,二同時可以給一些初學設計模式的朋友一些參考。首先我介紹的是設計模式中比較簡單的乙個模式 單例模式 因為...

C 設計模式(1) 單例模式

單例模式的特點 1 該類只有乙個例項 2 該類在內部建立該例項 3 向整個系統公開這個例項介面 適用於多執行緒的四種程式設計方式 第一種 將建構函式設為私有可以保證其他類不能從這個類派生或者建立類的例項 另外 析構函式私有化則是為了讓某個類只能通過new來建立 class singletion1 p...