大話設計模式 設計模式 單例設計模式

2022-04-19 18:04:57 字數 1426 閱讀 6464

解決的問題:

保證乙個類在記憶體中的唯一性。

比如,必須要對於多個程式使用同乙個配置資訊時,就需要保證該物件的唯一性。

原理:

如何保證物件的唯一性呢?

不允許其他程式使用new建立該類物件

在該類中建立乙個本類物件

對外提供乙個公共方法,使其他程式可以獲取該例項。

步驟:

私有化該類的建構函式

通過new在本類中建立乙個本類物件

定義乙個公共的方法,將建立的物件返回。

單利設計模式的分類:

1.餓漢式

//

餓漢式class

single

//建立一次該類物件

private

static single s = new

single();

//對外提供獲取該物件的方法

public

static

single getinstance()

}

class

singledemo

}

記憶體**:

說明:main函式進棧,並執行第一句**single s1 =single.getinstance(); ,建立s1引用

在方法區中載入single類的方法,在非靜態區有single的建構函式,靜態區有s成員變數、getinstance方法

在堆中建立乙個single物件,並讓s指向該物件

執行single s1 =single.getinstance(); 賦值操作,使s1的值為s的值。

s2同理,由於對記憶體中只有乙個該類的物件,並使靜態區的s指向它,因此s1和s2指向同一物件。

2.懶漢式

//

l懶漢式

class

single

//宣告乙個該類的引用

private

static

single s;

//對外提供獲取該類唯一物件的方法

public

static

single getinstance()

}

餓漢和懶漢模式的區別:

餓漢模式,類一載入物件就已經建立

懶漢模式,類載入時沒有物件,只有呼叫了getinstance方法才建立物件,即延遲載入

餓漢模式效率比懶漢模式高,因為餓漢模式不像懶漢模式那樣每次獲取物件都做判斷

懶漢模式在多執行緒中可能存在安全問題。

大話設計模式 單例模式

在開發過程中,其實很多情況下,都需要用到單例模式來維持物件的唯一性。比如執行緒池 資料來源 sessionfactory等。一般的做法 懶漢式 public class myclass 宣告乙個靜態方法來返或乙個單例物件 public static myclass getinstance 但是這個會...

大話設計模式 單例模式

一 單例模式 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。二 例項 public class singleton public static singleton getinstance return singleton public class singletondousync publ...

《大話設計模式》 筆記 單例模式

單例模式 保證乙個類僅有乙個例項,並提供乙個供訪問的全域性點。其它優點 單例模式因為是卦裝的它的唯一例項,這樣它可以嚴格地控制客戶怎樣訪問它以及何時訪問它。簡單的說就是對唯一例項的受控訪問。呼叫 以上方式存在不足。在多執行緒的程式中,多個執行緒同時訪問單例類,呼叫getinstance 方法,會有可...