Java設計模式之單例模式

2021-09-24 07:21:01 字數 1759 閱讀 3177

保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

在乙個系統中,要求乙個類有且僅有乙個物件,具體使用場景如下:

public class singleton 

public static singleton getinstance()}

複製**

優點:

缺點:

public class singleton 

public static singleton getinstance

() return instance;

}}複製**

優點:

缺點:

public class singleton 

public static synchronized singleton getinstance

() return instance;

}}複製**

優點:

缺點:

大部分時候我們是用不到同步的,所以,不建議用這種模式。

public class singleton 

public static singleton getinstance

() }

}return instance;

}}複製**

優點:

缺點:

dcl(double check lock) 在高併發環境下也會有一定的缺陷,dcl雖然在一定程度上解決了資源的消耗、多餘的同步、執行緒安全問題等問題,但還是在某些情況會出現失效的問題,也就是dcl失效。這裡建議用靜態內部類單例模式來代替dcl

public class singleton 

public static singleton getinstance

() private static class singletonholder

}複製**

第一次載入singleton類時並不會初始化sinstance。 只有在第一次呼叫getinstance方法時虛擬機器才會載入singletonholder並初始化 sinstance。

優點:

缺點:

public enum singleton 

}複製**

優點:

缺點:

總結:到這裡6種單例寫法已介紹完,至於選擇那種形勢的單例模式,取決與你專案本身情況:是否複雜的高併發環境,或者是否需要控制單例物件的資源消耗。

java設計模式之單例模式

單位面試題目中有一道關於單例模式的題目.大多數參加筆試的同事都會寫出getinstance這個函式,但是當我問起什麼情況下需要使用單例 單例具體有什麼好處的時候 static函式也可以構建唯一例項,為什麼還需要單例.從使用單例的經驗來看,如下場景下,個人感覺應該使用單例 1.如果需要構建乙個工具類,...

java設計模式 之 單例模式

單例模式 有些類在程式執行過程中只需要儲存乙個例項,比如檔案管理類,音訊管理類,那麼我們如何實現乙個單例類呢?有以下幾點 1 定義乙個靜態變數 2 建構函式私有化 3 提供乙個public 靜態方法,獲取這個例項 4 一定要做執行緒同步 public static class singleton p...

Java設計模式之單例模式

說到單例模式 大家一定非常熟悉 這是最常見也是設計模式中相對簡單 好理解的設計模式 今天就跟大家掰一掰單例模式 單例模式確保某個類只有乙個例項 應用場景 執行緒池 快取 等物件常常被設計成單例 然而單例分兩種 1 惡漢式 2 懶漢式 我們先來看下 惡漢式 public class singleton...