Java 單例設計模式

2021-07-10 13:26:24 字數 1161 閱讀 3495

單例 設計模式:

確保乙個類在記憶體中只有乙個物件

禁止類外建立該類物件——類外不能new 物件

在本類中定義乙個物件,

對外提供方法,以實現其他類對本類內物件的訪問

將建構函式私有化

在類內建立本類私有物件

在類內提供公有方法獲取該物件

class single

//建構函式私有,外部不可訪問,限制此類只能new乙個物件

private int num;

public void setnum(int num)

public int getnum()

private static single s=new single();//因為下面的方法的靜態,此屬性也要靜態

public static single getinstance() }

class singledemo

}

懶漢式

延遲載入——當呼叫getinstance()方法時,才建立物件

public static single s=null;

private single(){}

public static single getinstance()

}

return s;

}

懶漢式的對外提供物件的方法中,有兩次判斷是null的語句。

第一句的目的是判斷是否要加鎖

第二句的目的是判斷手否要為物件初始化。

這種雙重驗證,適用於多執行緒的情況。

比如程式剛開始執行,兩個執行緒a,b,同時呼叫了getinstance()方法,

此時,兩個多執行緒都走到了   第一次判斷物件是否為null,  的語句,然後只有乙個執行緒a上了鎖。另乙個執行緒b在鎖外等候,但已經判斷過 物件為null..

執行緒a又 執行了判斷 物件為null, 可以建立物件。釋放鎖。執行緒a執行完畢。

此時輪到執行緒b繼續執行,從第5行 後開始執行,此時執行緒b拿到鎖,進行 第7句**的執行。 而先前執行緒a已經為物件s進行了建立,所以不再會繼續建立物件。執行緒b釋放鎖,退出。

餓漢式與懶漢式的區別,在於類變數開始宣告時便指向乙個物件還是呼叫對外方法時才建立物件

執行結果20 , 很好地貫徹了單例設計模式只允許建立乙個物件的方針

java設計模式 單例設計模式

public class main 餓漢式 空間換時間 多執行緒訪問不會建立多個物件 author admin class singleton 2建立本類物件 private static singleton s new singleton 3對外提供公共的訪問方法 public static si...

Java單例設計模式

單例設計模式也有人叫單態,基本上有兩種寫法一種是餓漢式,另外一種是懶漢式。餓漢式就是一開始就建立了例項物件 public class singleton public static singleton getintance 懶漢式是需要的時候才建立 它比較懶 而且會涉及執行緒同步問題,需要增加同步 ...

java 單例設計模式

單例設計模式 保證乙個類在記憶體中只有乙個物件。模式 模式就是解決 一類 問題的固定步驟 模式的概念最早起源於建築行業 建房子的步驟都是一樣子 打地基 澆柱子 蓋樓面 砌牆 封頂 裝修 入住軟體行業中23種設計模式 單例設計模式 模板設計模式 裝飾者設計模式 觀察者設計模式 工廠設計模式單例設計模式...