~~~~~~~~~~~~~~~~~~~~~~~~~~
解決的問題:保證乙個類在記憶體中的物件唯一性。
eg:
多程式讀取乙個配置檔案時,建議配置檔案封裝成物件。
會方便操作其中資料,又要保證多個程式讀到的是同乙個配置檔案物件,
就需要該配置檔案物件在記憶體中是唯一的。
不讓其他程式建立該類物件。在本類中建立乙個本類物件。對外提供方法,讓其他程式獲取這個物件。public class single
//2、建立私有並靜態的本類物件。
private static single s = new single();
//3、定義公有並靜態的方法,返回該物件。
public static single getinstance()
}
注意問題:
由於外界無法建立single物件,沒有物件,那就無法呼叫getinstance方法,這時需要將getinstance方法靜態化
public class single
//在本類中建立本類物件
private static single instance = null;
//對外提供靜態訪問方法,獲取本類例項物件
public static synchronized single getinstance()
return instance;
}}
class singledemo
}
注意事項:
懶漢式有乙個缺點,就是在多執行緒中使用的時候,可能會建立多個例項物件。
比如,執行緒1來呼叫 getinstance() 方法,判斷了 s==null,然後執行緒1由於未知的原因阻塞了,
執行緒2再來呼叫 getinstance() 方法,判斷 s==null ,執行緒2就建立了乙個物件,
這時候執行緒1又執行了,那麼執行緒1就會建立乙個物件,這樣就會造成多個物件。
Java設計模式 設計模式之單例詳解
單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證應用中乙個單例類只有且只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並提供全域性訪問點。實現單例三要素 教科書中的示例是很簡單的,要想實現乙個單例類,只需要三點 1 定義私有的靜態成員...
java設計模式之單例模式
單位面試題目中有一道關於單例模式的題目.大多數參加筆試的同事都會寫出getinstance這個函式,但是當我問起什麼情況下需要使用單例 單例具體有什麼好處的時候 static函式也可以構建唯一例項,為什麼還需要單例.從使用單例的經驗來看,如下場景下,個人感覺應該使用單例 1.如果需要構建乙個工具類,...
java設計模式 之 單例模式
單例模式 有些類在程式執行過程中只需要儲存乙個例項,比如檔案管理類,音訊管理類,那麼我們如何實現乙個單例類呢?有以下幾點 1 定義乙個靜態變數 2 建構函式私有化 3 提供乙個public 靜態方法,獲取這個例項 4 一定要做執行緒同步 public static class singleton p...