設計模式之單例模式

2021-07-30 18:42:23 字數 1577 閱讀 9811

設計模式

(是一套被反覆使用,多人熟知的,經過分類編目的,**設計經驗的總結)

目的:

使用設計模式是為了可重用**,讓**更容易被他人理解,保證**的可靠性。

什麼是單例模式:(乙個國家只能有乙個皇帝,如果有多個就會導致很多問題。。。)

有些物件我們只需要乙個就足夠了,比如:

配置檔案,工具類,執行緒池,快取,日誌物件等等。。。如果創造出多個例項,那麼多個例項去讀取同乙個配置檔案等,就會導致很多問題,比如占用資源過多,結果不一致等等。

那麼我們就該思考怎麼保證整個應用中某個例項有且只有乙個?—>單例模式

常用的兩種單例模式:餓漢模式,懶漢模式。

package com.danli;

/* * 單例模式:singleton

* 應用場合:有些物件我們只需要乙個就足夠了,比如古代皇帝,我們現在的老婆。。。

* 作用:保證整個應用中某個例項有且只有乙個

* 型別:餓漢模式,懶漢模式

*/public

class singleton

//建立類的唯一例項,使用private(私有的),static(靜態的)修飾

private

static singleton instance = new singleton();

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

public

static singleton getinstance()

}

package com.danli;

/* * 單例模式:singleton2

* 應用場合:有些物件我們只需要乙個就足夠了,比如古代皇帝,我們現在的老婆。。。

* 作用:保證整個應用中某個例項有且只有乙個

* 型別:餓漢模式,懶漢模式

*/public

class singleton2

//2,宣告類的唯一例項,使用private static修飾,並沒有去例項化(也就是沒有new)

private

static singleton2 instance;

//3,提供乙個用於獲取例項的方法,使用public static修飾

public

static singleton2 getinstance()

return instance;

}}

package com.danli;

public

class test else

//懶漢模式

singleton2 s3 = singleton2.getinstance();

singleton2 s4 = singleton2.getinstance();

if(s3 == s4)else

}}

區別:

懶漢模式–>懶漢模式類載入時快,執行獲取物件慢(執行緒不安全)

餓漢模式–>餓漢模式類載入時慢,執行獲取物件快(執行緒安全)

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會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...