C# 實作 ObjectFactory
MSN Space、Google Doc、Google BlogChui-Wen Chiu
2007.07.31
上次實作 C++ 版本的 ObjectFactory 之後,最近又需要實作 C# 版本的 ObjectFactory,於是在網路上找到[1]這篇文章。實作 ObjectFactory 的關鍵在於定義了 Factory Method 得 Delegate。讓需要納入 ObjectFactory 的每一個類別都需要實作該 Delegate。我們直接以 [1] 中的範例來了解 ObjectFactory 實作的概念。
首先定義 Factory Method 的 Delegate 如下:
/// <SUMMARY> |
接著定義要透過 ObjectFactory 生成的基礎類別,
/// <SUMMARY> |
[1] 使用抽象類別來實作,這不是必須的,你可以依據自己的需要作調整。接著定義你自己的類別族群,以下定義一個示範用的 Class1
/// <SUMMARY> |
最後以上述為基礎所設計的 ObjectFactory 如下:
/// <SUMMARY> |
ObjectFactory 很典型的會有三個 Method:註冊(RegisterHandler)、移除(UnregisterHandler)和生成(CreateObject)。移除的 Method 不是很必要,註冊是將需要透過 ObjectFactory 生成的 FactoryMethod 紀錄起來,並透過特定的識別碼可以索引,上述是透過 Hashtable 來作對照表,我個人習慣採用 Dictionay<>。生成是透過識別碼取出對應的 FactoryMethod 進行物件生成,這也是定義 ObjectCreator 的目的,如果沒有這個規範的呼叫介面,很難讓 ObjectFactory 生成各種物件。
以下是 ObjectFactory 的使用:
static void Main(string[] args) |
參考資料
[1] Asa Meltzer, "Delegate Factory"