《單例模式》

單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱爲單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個實例。即一個類只有一個對象實例數學與邏輯學中,singleton定義爲有且僅有一個元素的集合

單例模式最初的定義出現於《設計模式》(艾迪生維斯理, 1994):保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。

Java中單例模式定義:一個類有且僅有一個實例,並且自行實例化向整個系統提供。

單例模式是設計模式中最簡單的形式之一。這一模式的目的是使得類的一個對象成爲系統中的唯一實例。要實現這一點,可以從客戶端對其進行實例化開始。因此需要用一種只允許生成對象類的唯一實例的機制,“阻止”所有想要生成對象的訪問。使用工廠方法來限制實例化過程。這個方法應該是靜態方法(類方法),因爲讓類的實例去生成另一個唯一實例毫無意義。

 優缺點

優點

一、實例控制

單例模式會阻止其他對象實例化其自己的單例對象的副本,從而確保所有對象都訪問唯一實例。

二、靈活性

因爲類控制了實例化過程,所以類可以靈活更改實例化過程。

缺點

一、開銷

雖然數量很少,但如果每次對象請求引用時都要檢查是否存在類的實例,將仍然需要一些開銷。可以通過使用靜態初始化解決此問題。

二、可能的開發混淆

使用單例對象(尤其在類庫中定義的對象)時,開發人員必須記住自己不能使用new關鍵字實例化對象。因爲可能無法訪問庫源代碼,因此應用程序開發人員可能會意外發現自己無法直接實例化此類。

三、對象生存期

不能解決刪除單個對象的問題。在提供內存管理的語言中(例如基於.NET Framework的語言),只有單例類能夠導致實例被取消分配,因爲它包含對該實例的私有引用。在某些語言中(如C++),其他類可以刪除對象實例,但這樣會導致單例類中出現懸浮引用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章