設計模式筆記之 單例模式

2021-07-26 11:16:42 字數 1434 閱讀 1982

那麼單例的建立方式有4中(其實是5種,只不過有一種因為不推薦使用,就不學習了),這種寫法分類來自尚學堂的老師。

這個寫法是類在初始化就已經完成單例的建立的,不可以延遲操作

package singlepattern;

/** * 這是類初始化就馬上載入,惡漢

*@author cloudhuan

* */

public

class

singlepattern02 ;

public

static singlepattern02 getinstance()

}

這個可以實現延遲載入,但是對於多執行緒來說效率是最低的,因為有乙個synchronized 同步鎖,建立過程可能會等待。

package singlepattern;

/** * 這個可以延遲載入,真正使用的時候才去載入,懶漢

* 類載入都是執行緒安全的,但是這裡需要加同步鎖

*@author cloudhuan

* */

public

class

singleinstance01

return singleinstance;

}public

void

printhello()

}

是最推薦的寫法,把例項化放在靜態內部類裡面,在有需要才會載入內部類,並且類初始化是天然同步的。

package singlepattern;

/** * 靜態內部類的載入方式,用的最多的,集合懶漢和惡漢的優點

* 1.類載入是天然執行緒安全的

* 2.用到才載入

*@author cloudhuan

* */

public

class

singlepattern03

private

singlepattern03(){}

public

static singlepattern03 getinstance()

}

當不需要延遲載入就用這個吧,因為列舉型別是系統自帶的單例模式,沒有什麼bug,寫法也是超級簡單的

package singlepattern;

/** * 這是通過列舉方式的,列舉的型別就是系統自帶的單例模式

*@author cloudhuan

* */

public

enum singlepattern04

}

上面四種方式,推薦的是列舉和靜態內部類模式,效率最高。

設計模式筆記之 單例設計模式

首發 單例模式確保乙個類只有乙個例項,並提供乙個全域性訪問點。實現乙個單例模式很簡單,但我沒有想過單例模式有什麼用處,直到一次筆試就遇到了問單利模式的應用場景有哪些。單例模式的應用場景 執行緒池 thread pool 快取 cache 對話方塊 處理偏好設定 登錄檔 registry 物件,日誌物...

C 設計模式之單例模式筆記

c 的單例模式主要現在在日誌模組 單例模式.cpp 定義控制台應用程式的入口點。include stdafx.h 保證乙個類僅有乙個例項,並提供乙個訪問他的全域性訪問點 include include include using namespace std class singelton stati...

設計模式之單例模式,學習筆記

所謂的單例模式就是說乙個物件,我們只去例項化一次,在頁面中如果有乙個物件是唯一的,那麼就可以用單例模式。var fn function name fn.prototype.getname function fn.getinstrace function var a fn.getinstrace js...