單例設計模式的使用

2021-07-16 06:34:14 字數 2068 閱讀 1281

1.餓漢式單例模式

/**

* 餓漢

_單例模式

* created by administrator on 2016/8/6.

*/public class singmode

public static singehanmode getinstance()

}

2.懶漢式單例模式

/**

* 懶漢

_單例模式

* 優點

:單例只有在使用的時候才會初始化

,在一定程度上節約了資源

* 缺點

:第一次載入時需要及時進行例項化

,反應稍慢

,最大的問題是

->

每次getinstance()

方法都會進行同步

,這樣會消耗不必要的資源

,造成不必要的同步開銷**

這種模式一般不建議使用.*/

public class singmode

//3.

建立getinstance()

方法public static synchronized singmode getinstance()

return

singmode;}

}

3.雙重檢索單例模式

/**

* 單例的最常用寫法

(雙重檢索模式)*

優點:資源利用率高,*

缺點:第一次載入時反應慢

*/public class singmode

//3.

建立getinstance();

方法public static singmode getinstance()}}

return

singmode;}

}

4.靜態內部類單例模式

/**

* 靜態內部類單例模式* 在

<

併發程式設計實踐

>

>

一書中推薦這種單例模式

* 該書還指出了不推薦使用雙重檢索

* 優點

:第一次載入的時候不會初始化

,只有在呼叫

getinstance()

方法的時候才會被初始化

,*

第一次呼叫

getinstance()

的時候回讓

jvm載入內部類

,不僅能保證執行緒的安全

,也能保證單例物件的唯一性

*

同時也延時了單例的例項化

*/public class singmode

//2.

建立getinstance()

方法public static singmode getinstance()

//3.

靜態內部類建立物件

/***

靜態內部類

*/private static class singmodeholder

}

雖然以上方法都各有各的好處,但是在反序列化的時候都會出現問題

需要加入如下**:

/**

*防止反序列化的方法

*/private object readresolve() throws objectstreamexception

這個方法也是在書上看見的,也不知道怎麼回事,煩請大神賜教!

單例的另類實現

/**

* 單例模式管理者

* 在程式的初始

,將多個單例模式注入到乙個統一的管理類中

,在使用的時候根據

key獲取對應的物件

*/public class singmodemanager

//3.

建立新增和獲取的方法

public static void

registerservice(string key, object object)

}public static object getservice(string key)

}

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

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

設計模式 單例設計模式

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

設計模式 單例設計模式

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