設計模式學習之 Singleton 單例 模式

2021-04-19 19:09:11 字數 927 閱讀 5119

1、singleton單例模式,是一種責任型模式。這種模式,通過隱藏構造器和提供對建立物件的單個訪問點,實現了將類的職責---建立乙個擔當著獨一無二角色的物件(生產唯一例項),集中於類的單個例項中。

2、它的宗旨:確保某個類只有乙個例項,並且為之提供乙個全域性訪問點。

3、它的機制:將該單例物件作為單例類的乙個靜態域建立例項;顯示提供唯一的私有構造器(注意,必須顯示提供,否則使用者仍然會呼叫系統提供的預設構造器來例項物件);提供乙個具有公有訪問屬性的靜態方法,利用它獲取該類的唯一例項。

4、初始化例項的兩種時機:

提前建立單例物件----申明該單例物件的靜態域時建立例項;

滯後初始化----------在第一次使用該單例物件的時候再建立例項。滯後例項化單例物件的兩個理由:也許在靜態初始化時間,你沒有關於如何初始化單例物件的足夠資訊;也許為了等待資源,諸如資料庫連線,尤其是在某些特定會話中不需要這個單例的應用程式中。

5、多執行緒環境中確保建立唯一例項:使用屬於當前類的鎖進行同步,即使用鎖機制來協調不同執行緒中多個方法的執行。因為我們無法保證,在多執行緒環境中,乙個方法能夠持續執行到結束,其它執行緒的方法才開始執行。此外,我們也應該在多執行緒環境中,應用這個同步機制,來限制對單例物件內部資料的訪問。

6、該模式或許是最負盛名的模式,但由於我們很容易誤用它,因此不要輕易使用。不要讓singleton模式成為建立全域性變數的唯一方式。注意,如果是想建立供測試用的子類,它可能不是最合適的,因為並不只有乙個例項。

7、示例:

public class singleton

public static singleton getinstance()

return instance;

} }public void recordcount()//注意:此處也需要做同步,我們無法保證,不會有兩個以上執行緒同時操作此count屬性。

}

Swift設計模式之單例 SINGLETON

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

設計模式學習筆記 單例模式(Singleton)

1.特點 只需乙個例項時考慮。2.概念 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。3.類圖 4.程式實現 1 懶漢式 對於懶漢模式,我們可以這樣理解 該單例類非常懶,只有在自身需要的時候才會行動,從來不知道及早做好準備。它在需要物件的時候,才判斷是否已有物件,如果沒有就立即建立乙個物件...

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

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