設計模式之單例模式

2022-07-21 02:03:13 字數 1562 閱讀 7609

單例模式,是一種常用的軟體設計模式。

在它的核心結構中只包含乙個被稱為單例的特殊類。

通過單例模式可以保證系統中,應用該模式的類乙個類只有乙個例項。即乙個類只有乙個物件例項。

單例模式分別有懶漢模式與餓漢模式。

public class lazy 

//2.宣告類的唯一例項

private static lazy instance;

//3.提供乙個用於獲取例項的方法

public static synchronized lazy getinstance()

return instance;

}}

注:為何稱他為懶漢呢?我們可以把他當成乙個酒店員工,因為他比較懶,所以每次都要等客人來就餐的時候(lazy.getinstance()),他才開始去生產,instance = new lazy()。

public class starving 

//2.建立類的唯一例項

private static starving instance = new starving();

//提供乙個用於獲取例項的方法

//需要注意的是,我們這個方法屬於物件,不是類方法

//public starving getinstance()

//3.提供乙個用於獲取例項的私有的類的靜態成員方法

public static starving getinstance()

}

注:為何稱他為餓漢呢?可以想象成乙個飯點時間,就餐時間還沒到(starving.getinstance),餓漢就已經準備好菜啦(private static starving instance = new starving()),一到時間馬上吃飯,不用再等待上菜。

public class singleton 

public static singleton getinstance( ) }}

return instance;

}}

注:這種模式中雙重判斷加同步的方式,比第乙個例子中的效率大大提公升,因為如果單層if判斷,在伺服器允許的情況下,假設有一百個執行緒,耗費的時間為100*(同步判斷時間+if判斷時間),而如果雙重if判斷,100的執行緒可以同時if判斷,理論消耗的時間只有乙個if判斷的時間。所以如果面對高併發的情況,而且採用的是懶漢模式,最好的選擇就是雙重判斷加同步的方式。

餓漢模式的特點是載入類時比較慢,但執行時獲取物件的速度比較快,執行緒安全。

餓漢模式是執行緒安全的,在類建立的同時就已經建立好乙個靜態的物件供系統使用,以後不在改變。

懶漢模式的特點是載入類時比較快,但是在執行時獲取物件的速度比較慢,執行緒不安全。

懶漢模式如果在建立例項物件時不加上synchronized則會導致物件的訪問不是執行緒安全的。

所以在此推薦大家使用餓漢模式

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...