確保物件的唯一性——單例模式 (五)
3.6 單例模式總結
單例模式作為一種目標明確、結構簡單、理解容易的設計模式,在軟體開發中使用頻率相當高,在很多應用軟體和框架中都得以廣泛應用。
1.主要優點
單例模式的主要優點如下:
(1) 單例模式提供了對唯一例項的受控訪問。因為單例類封裝了它的唯一例項,所以它可以嚴格控制客戶怎樣以及何時訪問它。
(2) 由於在系統記憶體中只存在一個物件,因此可以節約系統資源,對於一些需要頻繁建立和銷燬的物件單例模式無疑可以提高系統的效能。
(3) 允許可變數目的例項。基於單例模式我們可以進行擴充套件,使用與單例控制相似的方法來獲得指定個數的物件例項,既節省系統資源,又解決了單例單例物件共享過多有損效能的問題。
2.主要缺點
單例模式的主要缺點如下:
(1) 由於單例模式中沒有抽象層,因此單例類的擴充套件有很大的困難。
(2) 單例類的職責過重,在一定程度上違背了“單一職責原則”。因為單例類既充當了工廠角色,提供了工廠方法,同時又充當了產品角色,包含一些業務方法,將產品的建立和產品的本身的功能融合到一起。
(3) 現在很多物件導向語言(如Java、C#)的執行環境都提供了自動垃圾回收的技術,因此,如果例項化的共享物件長時間不被利用,系統會認為它是垃圾,會自動銷燬並回收資源,下次利用時又將重新例項化,這將導致共享的單例物件狀態的丟失。
3.適用場景
在以下情況下可以考慮使用單例模式:
(1) 系統只需要一個例項物件,如系統要求提供一個唯一的序列號生成器或資源管理器,或者需要考慮資源消耗太大而只允許建立一個物件。
(2) 客戶呼叫類的單個例項只允許使用一個公共訪問點,除了該公共訪問點,不能通過其他途徑訪問該例項。
|
【作者:劉偉 http://blog.csdn.net/lovelion】
相關文章
- 確保物件的唯一性——單例模式 (四)物件單例模式
- 確保物件的唯一性——單例模式 (三)物件單例模式
- 確保物件的唯一性——單例模式 (二)物件單例模式
- 設計模式系列之單例模式(Singleton Pattern)——確保物件的唯一性設計模式單例物件
- 單例模式的正確寫法單例模式
- 【指令碼】如何確保應用程式的唯一性指令碼
- 確保您擁有一個獨一無二的例項:單例模式的建立方式單例模式
- 單例模式 - 確定 N 先生的GrilFriend單例模式
- 單例模式的五種寫法單例模式
- 如何正確地寫出單例模式單例模式
- C# 單例模式的五種寫法C#單例模式
- Singleton(單例)——物件建立型模式單例物件模式
- 五種方式實現 Java 單例模式Java單例模式
- Java設計模式學習筆記(五) 單例模式Java設計模式筆記單例
- 設計模式之“物件效能模式”: Singleton 單例模式(筆記)設計模式物件單例筆記
- 單例模式的五種實現方式及優缺點單例模式
- 【設計模式】實現執行緒安全單例模式的五種方式設計模式執行緒單例
- 您的單例模式,真的單例嗎?單例模式
- JAVA物件導向高階:static的應用知識--單例模式 單例設計模式應用場景及好處 單例設計模式的實現方式Java物件單例設計模式
- 五大手段確保網路的安全(轉)
- 單例模式單例模式
- iOS單例物件iOS單例物件
- JS中的單例模式及單例模式原型類的實現JS單例模式原型
- DCL單例模式中的缺陷及單例模式的其他實現單例模式
- 【極客思考】設計模式:你確定你真的理解了單例模式嗎?設計模式單例
- Scala單例物件、伴生物件單例物件
- 單例模式(下)---聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) - 聊一聊單例模式的幾種寫法單例模式
- 單例模式(下) – 聊一聊單例模式的幾種寫法單例模式
- Flutter 中的單例模式Flutter單例模式
- Flutter(able) 的單例模式Flutter單例模式
- 單例模式的實現單例模式
- javascript單例模式的理解JavaScript單例模式
- 單例模式static的困惑單例模式
- 物件間的聯動——觀察者模式(五)物件模式
- 設計模式-單例模式設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例