設計模式之 單例 Singleton

2021-06-18 20:50:27 字數 1131 閱讀 3439

單例模式最初的定義出現於《設計模式》(艾迪生維斯理, 1194):「保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
單例模式是

設計模式

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

一、例項控制

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

二、靈活性

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

物件生存期

不能解決刪除單個物件的問題。在提供記憶體管理的語言中(例如基於.net framework的語言),只有單例類能夠導致例項被取消分配,因為它包含對該例項的私有引用。在某些語言中(如 c++),其他類可以刪除物件例項,但這樣會導致單例類中出現懸浮引用。

package com.enterise.always.singleinstance;

/** * 單例設計模式

* @author always

* */

public class singleinstance

public static singleinstance getinstance()

}

package com.enterise.always.singleinstance;

/** * 單例設計模式

* @author always

* */

public class singleinstance

public static singleinstance getinstance()

return instance;

}}

惡漢式和懶漢式的區別:
在時間和空間上來說:懶漢式是典型的時間換空間     惡漢式是典型的空間換時間

Swift設計模式之單例 SINGLETON

保證乙個類公有乙個例項,並提供乙個訪問它的全域性訪問點。1 使用場景 2 實現的重要三個步驟 swift語言不支援變數及方法的許可權,沒有辦法隱藏變數及方法,可以隨意直接建立乙個例項。單例的建立有很多寫法,swift支援只有struct支援靜態變數,class不支援靜態變數,所以很容易想到,在類的內...

java設計模式 單例模式(Singleton)

設計模式 design pattern 是一套被反覆使用 經過分類編目 設計經驗的總結。目的 為了可重用 讓 更容易被他人理解 保證 的可靠性。適用場景 有些物件我們只需要乙個,比如,配置檔案 工具類 執行緒池 快取 日誌物件等。作用 保證整個應用程式中某個例項有且只有乙個。餓漢式 public c...

23種設計模式之單例模式 Singleton

singleton是軟體開發中最常用的的設計模式之一,它有三個要點 只能有乙個例項 構造器私有化 在內部自行建立該例項 用乙個靜態變數來儲存唯一的例項 向外部提供獲得例項的方式 1.直接暴露 2.用靜態變數的get方法獲取 兩種寫法 public class singleton public cla...