10/27/2006 3:28:00 AM

泛型 + Singleton Patterns (II)

Microsoft.NET

上篇因為貼 code , 放一起實在太長了, 只好分兩篇... 吊完胃口, 不囉唆了, 直接看我想出來的解法. 原則還是跟一般的函式庫一樣, 我希望先做出一個 base class, 把 singleton 的實作細節都處理掉, 函式庫的目的是讓使用你 lib 的人會很快樂才對, 因此 base class 可以辛苦點沒關係, 但是絕不能讓用你 code 的人得做苦工...

好了, 我實做出來的版本, code 如下:

    7     public class GenericSingletonBase<T>

    8         where T: GenericSingletonBase<T>,

    9         new()

   10     {

   11         public readonly static T Instance = new T();

   12     }

沒看錯, 就是只有這幾行... 接下來貼的 code 是, 如果我自己要實作 singleton pattern 的 class 時, 該如何來用這個 lib:

   14     public class GenericSingletonImpl1

   15         : GenericSingletonBase<GenericSingletonImpl1>

   16     {

   17         public GenericSingletonImpl1()

   18             : base()

   19         {

   20             Console.WriteLine("GenericSingletonImpl1.ctor()");

   21         }

   22     }

扣掉非必要的 constructor, 其實 class 繼承的部份寫完, 就沒有其它必要的 code 了, 很好, 又滿足了我一個要求...

再來就剩最後一個, 要用這個 class 的 code 會不會像上一篇的例子一樣醜? 每次都要自己 casting ? 再看一下 code ...

   21             GenericSingletonImpl1 o1 = GenericSingletonImpl1.Instance;

   22             GenericSingletonImpl1 o2 = GenericSingletonImpl1.Instance;

   23             GenericSingletonImpl1 o3 = GenericSingletonImpl1.Instance;

很好, 收工... 哈哈... 謝謝大家的收看 [:D]



Comments

11/10/2006 1:43:32 AM #

alex

SINGLETON.

我瞳孔放大.

只因他是競爭對手新引進的WHISKY BRAND.

(N) (N) (N)

alex | Reply

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
Loading






精選文章

RUN! PC 文章及範例下載
2010/07. 結合檔案及資料庫的交易處理
2010/05. TxF讓檔案系統也能達到交易控制
2010/04. 生產者 vs 消費者 - 執行緒的供需問題
2008/11. 生產線模式的多執行緒應用
2008/09. 用ThreadPool發揮CPU運算能力
2008/06. SEMAPHORE在ASP.NET的應用
2008/04. 以ASP.NET開發同步WEB應用程式

如何學好 "寫程式" 系列
#1. 該如何學好 "寫程式" ??
#2. 為什麼 programmer 該學資料結構 ??
#3. 進階應用 - 資料結構 + 問題分析
#4. 你的程式夠 "可靠" 嗎?

#5. 善用 TRACE / ASSERT

安德魯是誰?

Andrew Wu | Create Your Badge

我喜歡鑽研物件導向、軟體工程及作業系統等相關技術。我會在這裡發表我的研究心得,也當作我自己的學習筆記。


Recent comments

Comment RSS