設計模式之單例模式

2021-09-24 03:30:53 字數 1264 閱讀 9500

最近因為想系統的學習下設計模式,所以在這裡做做筆記。我主要是根據《設計模式之禪》以及網際網路上的一些資源來學習的,若有錯誤,還望大家多多指正。

1、單例模式:單例物件的類只允許乙個例項存在。(構造方法私有化,對外提供訪問介面)

具體介紹:

懶漢模式(執行緒不安全,不可用):

* 通用單例模式

public class singletonpattern {

private static singletonpattern singletonpattern = null;

// 構造方法私有化,限制不能直接產生乙個例項

private static singletonpattern () {

// 對外開放的介面

public singletonpattern getinstance () {

if (this.singletonpattern == null) {

// 如果沒有示例建立乙個

this.singletonpattern = new singletonpattern();

return singletonpattern;

* 但是此種寫法會有問題,在多執行緒環境下,兩個執行緒在很小的時間差內訪問此執行緒方法,比如執行緒a、b

* a在申請記憶體時,b正好訪問此處,此時判斷this.singletonpattern == null 時,結果為true還是false?

* 所以這種方式是不安全的

餓漢模式:

* 單例模式完整安全版

public class singletonpatternsafe {

// 實現將物件new出來,並且以final修飾

private static final singletonpatternsafe singletonpatternsafe = new singletonpatternsafe();

// 構造方法,限制不能直接產生乙個例項

private singletonpatternsafe() {

// 提供對外的介面,以synchronized修飾,保證執行緒安全

public synchronized singletonpatternsafe getinstance() {

// 返回物件

return singletonpatternsafe;

應用場景:經常在系統需要使用全域性物件來對系統進行協調的時候使用。如共享日誌、執行緒池等,一般共享的資源都可以用單例來實現。

注意:不能用反射模式建立單例,否則會例項化乙個新的物件。

設計模式之單例模式

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