單體模式探討(原創)
Singleton模式定義:單體模式既從全域性的觀點看只有一個物件。
值得注意的是如果你的Singleton繼承自 Object,你可以不用考慮clone函式的問題,因為它是protected的,但是如果你是從某個有public 的clone函式物件繼承來的單體物件,你應該過載 clone函式並丟擲CloneNotSupportedException錯誤。 另外,還有一個lazy initialization的問題,有些同行喜歡lazy initialization,那麼一定要注意需要使用synchronized。否則, 有可能獲得多個例項 <p class="indent"> |
//: singleton:SingletonPattern.java import junit.framework.*; final class Singleton { private static Singleton s = new Singleton(47); private int i; private Singleton(int x) { i = x; } public static Singleton getReference() { return s; } public int getValue() { return i; } public void setValue(int x) { i = x; } } public class SingletonPattern extends TestCase { public void test() { Singleton s = Singleton.getReference(); String result = "" + s.getValue(); System.out.println(result); assertEquals(result, "47"); Singleton s2 = Singleton.getReference(); s2.setValue(9); result = "" + s.getValue(); System.out.println(result); assertEquals(result, "9"); try { // Can't do this: compile-time error. // Singleton s3 = (Singleton)s2.clone(); } catch(Exception e) { throw new RuntimeException(e); } } public static void main(String[] args) { junit.textui.TestRunner.run(SingletonPattern.class); } } ///:~ <p class="indent"> |
最後,我們可以由單體模式引申出一個物件池的問題的,不是一個物件,而是隻有最多N個物件的問題。這個也就是物件池,可以看作是單體物件的 一個變化。 <p class="indent"> |
相關文章
- 深入探討單例模式單例模式
- Android設計模式探討--單例模式Android設計模式單例
- Android設計模式探討 單例模式Android設計模式單例
- State模式探討(筆記心得體會)模式筆記
- Proxy模式探討(筆記心得體會)模式筆記
- Iterators模式探討(筆記心得體會)模式筆記
- 責任鏈模式探討模式
- Android設計模式探討--Builder模式Android設計模式UI
- Android設計模式探討 Builder模式Android設計模式UI
- oracle 雙機部署模式探討Oracle模式
- Web 框架的架構模式探討Web框架架構模式
- 探討工廠模式的物件建立模式物件
- 唯品會 JIT模式 應用探討模式
- B/S模式安全性探討 (轉)模式
- Java原始碼分析:深入探討Iterator模式Java原始碼模式
- 結合“xPlus”探討軟體架構的創新與變革架構
- 簡單探討TypeScript 列舉型別TypeScript型別
- Promise探討Promise
- 開發者探討手遊IAP盈利模式的未來模式
- 【原創】組織專案管理討論專案管理
- 深入探討 UndefinedUndefined
- IsPostBack深入探討
- 創造模式 單例模式模式單例
- 探討代理模式與Java反射機制的應用模式Java反射
- 對軟體專案管理的探討(1)專案管理
- 對軟體專案管理的探討(2)專案管理
- 對軟體專案管理的探討 (轉)專案管理
- 對軟體專案管理的探討(轉)專案管理
- NSOperation的進階使用和簡單探討
- NSThead的進階使用和簡單探討
- 5 大場景深度探討何為 Serverless 架構模式?Server架構模式
- 關於多型實現Singleton模式的探討 (轉)多型模式
- 軟體開發週期估算及探討(轉)
- 對軟體專案管理的探討(1)(轉)專案管理
- 對軟體專案管理的探討(2)(轉)專案管理
- 簡單探討Golang中defer預計算引數Golang
- 簡單探討JavaScript 與 TypeScript之間的聯絡JavaScriptTypeScript
- 簡單探討sum()函式返回null的問題函式Null