設計模式 單例模式

2021-10-03 02:03:29 字數 2039 閱讀 8469

1、核心:

保證乙個類只有乙個例項,並且提供乙個訪問該例項的全域性訪問點。

2、單例模式的優點:

1)由於單例模式只生成乙個例項物件,減少了系統的效能開銷。當乙個物件的產生需要比較多的資源時,如讀取配置、產生其他依賴物件時,則可以通過在應用啟動時直接產生乙個單例物件,然後永久駐留記憶體的方式來解決

2)單例模式可以在系統設定全域性的訪問點,優化共享資源的訪問,例如可以設計乙個單例類,負責所有資料表的對映處理

1、餓漢式(執行緒安全,呼叫效率高。但是,不能延時載入。)

/*

* 測試單例模式

* * 餓漢模式

*/public

class

singletondemo1

//方法沒有同步,呼叫效率高

public

static singletondemo1 getinstance()

}

2、懶漢式(執行緒安全,呼叫效率不高。但是,可以延時載入。)
/*

* 測試單例模式

* * 懶漢模式

*/public

class

singletondemo2

//方法同步,呼叫效率低

public

static

synchronized singletondemo2 getinstance()

return instance;

}}

3、雙重檢測鎖式(由於jvm底層內部模型原因,偶爾會出現問題。不建議使用)
/*

* 測試單例模式

* * 雙重檢測鎖模式

*/public

class

singletondemo3

public

static singletondemo3 newinstance()

}}return singletondemo3;

}}

4、靜態內部類式(執行緒安全,呼叫效率高。但是,可以延時載入)
/*

* 測試單例模式

* * 靜態內部類模式

*/public

class

singletondemo4

private

singletondemo4()

public

static singletondemo4 getinstance()

}

5、列舉單例(執行緒安全,呼叫效率高,不能延時載入)
/*

* 測試單例模式

* * 列舉單例模式

*/public

enum singletondemo5

}

如何選擇?

1·、單例物件 占用 資源少,不需要延時載入:

列舉式 好於 餓漢式

2、單例物件 占用 資源大,需要延時載入:

靜態內部類式 好於 懶漢式

1、windows的taskmanager(任務管理器)就是很典型的單例模式。

2、**的計數器,一般都是採用單例模式實現,否則難以同步。

3、專案中,讀取配置檔案的類,一般也只有乙個物件。沒有必要每次使用配置檔案資料,每次都new乙個物件去讀取。

4、應用程式的日誌系統,一般也是採用單例模式實現,這一般是由於共享的日誌檔案一直處於開啟狀態,因為只能有乙個例項去操作,否則內容不好追加。

5、資料庫的連線池設計一般也是採用單例模式,因為資料庫連線是一種資料庫資源。

6、作業系統的檔案系統,也是大的單例模式實現的具體例子,乙個作業系統只能有乙個檔案系統。

8、在spring中,每個bean預設就是單例的,這樣做的優點是spring容器可以管理。

9、在servlet程式設計中,每個servlet也是單例。

10、在springmvc框架/structs1框架中,控制器物件也是單例。

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...

設計模式 單例模式

class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...

設計模式 單例模式

單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...