設計模式之Singleton

2021-04-25 14:47:26 字數 566 閱讀 4413

在很多時候,我們出於效能考慮,我們不希望反覆的例項化同乙個物件,而只對該物件例項一次,而所有需要用到該物件的地方都是引用同乙個類。singleton模式就可以達到這樣的目標,它得實現意圖便是確保乙個類只有乙個例項,並且為之提供乙個全域性的訪問點。

而下面的**便很好說明了如何實現單例模式:

該段**值得注意的地方有兩個,而這兩個地方也是能不能成功實現單例模式的關鍵,

1.在public static synchronized singlepattern getinstance() 方法必須要有synchronized 來修飾。因為如果沒有同步標誌的話,在多執行緒下很可能不能保證只有乙個唯一的例項。

2.確保單例類的建構函式為private,這樣就能確保在單例類外部任何物件都不能例項化它。

而這段**最後執行結果為:

singlepattern1:singlepattern1

singlepattern2:singlepattern1

兩次得到singlepattern單例類的引用都指向的是同乙個類例項,所以任何乙個對該例項的屬性的改變,都會影響到其他呼叫者。

設計模式之Singleton模式

保證類只有乙個物件例項,並提供乙個訪問它的全域性訪問點 只有乙個物件例項 提供乙個全域性訪問點 執行緒安全 在c 11之後,通過靜態區域性成員變數的特性來實現單例模式 第一次呼叫getinstance例項化靜態區域性成員變數instance之後每次呼叫getinstance都是返回第一次例項化的in...

C 設計模式之Singleton模式

singleton是二十三個設計模式中比較重要也比較經常使用的模式。但是這個模式雖然簡單,實現起來也會有一些小坑,讓我們一起來看看吧!首先我們看看這個設計模式的uml類圖。很清晰的可以看到,有三點是需要我們在實現這個模式的時候注意的地方。其中,私有化構造器是防止外部使用者建立新的例項而靜態方法用於返...

玩轉設計模式之Singleton

設計模式很重要,地球人都知道。singleton是最簡單的一種設計模式,也是用得最多的一種設計模式。如果遇到這種情況 在乙個vm中某乙個類有且只能有乙個例項,那麼就需要用到singleton設計模式。singleton實現起來也很簡單,如下 packagesample publicclassclas...