設計模式 單例

2021-10-20 01:29:57 字數 1812 閱讀 7612

單例:確保乙個類在任何情況下都決定只有乙個例項,只提供乙個全域性訪問點,並隱藏構造方法。

public

class

siglton

public

static

final siglton s =

newsiglton()

;public siglton getinstance()

}

或者你可以裝裝x

public

class

siglton

public

static

final siglton s;

static

public siglton getinstance()

}

public

class

siglton

public

static siglton s=null;

public siglton getinstance()

return s;

}}

或者執行緒安全的dbc

public

class

siglton

public

static

volatile siglton s=null;

public siglton getinstance()

}}return s;

}}

public

class

siglton

public statict final siglton getinstance()

public statict class

innerclass

}

但是以上單例會被反射,序列化破壞掉。

class <

?> clazz=siglton.class;

constructor c=clazz.

getdeclaredconstructor

(null)

;//強制訪問

c.setaccessible

(true);

object o1=c.

newinstance()

; object o2=c.

newinstance()

;//比較o1,o2發現其不相等

解決反射辦法很簡單,在私有的構造方法中去檢測是否為null即可

private

siglton()

}

解決序列化問題:

首先呢,序列化就是固化到磁碟在讀出來。

所以呢我們只要保證單例類 implements serializable,然後增加 readresolve()方法即可。

private  object readresolve()

原因在jdk原始碼中objectinputstream的readobject()會呼叫我們寫的readresolve();

public

class

siglton

public

static

final threadlocal

s=new

threadlocal

()}public

static siglton getinstact()

}

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...

設計模式 單例設計模式

歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...

設計模式 單例設計模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...