鑑於基本類型一如何將新派生類型添加到工廠模式?
三和派生類型 B: C:一個 d:一個
我有一個項目P. 我希望有一個列表來表示P.
A的出現有一種從P中提取Bs的策略,我想要成爲B類的一部分。 有一種從P中提取Cs的策略,我想成爲C類的一部分。 等 我想要它們全部列入一個大名單。
我想稍後能夠添加一個類E:A,儘可能少觸摸。在接受P的實例作爲參數的情況下有一個虛擬的靜態工廠方法會很酷,它可以多態地運行派生類中的所有靜態重載,例如C中的重載將從P中提取Cs並將它們放入List中。 當然,在C#中不存在像虛擬靜態方法那樣的東西。
我不能立即看到如何實現這個,以便可以添加類D:A和E:A,而不用觸及基類或一些不斷更新的「God-method」工廠方法以及具體的依賴關係到每個派生類型。
這裏有點晚了,所以我可能會錯過一些明顯的東西。 您的想法?
編輯:
我的具體情況是,我具有由控制模塊一過程工廠控制系統。我希望能夠識別某些更高級別的構造,如控制循環,反饋調整等。識別和管理這些構造的邏輯特定於所討論的單個構造類型。簡而言之,我想捆綁用於識別和處理構造的代碼。
讓我們來考慮一個類比。我有一個文本文件。它裏面有一些單詞。 Word是「基本」類型「A」。文本文檔是「P」項目。我可以實現類型「名詞」和「動詞」。在文本中識別「名詞」的方式特定於「名詞」並且代碼應該。隨着越來越多的類型在文本中被實現並被識別,列表變得更長。
對我來說,是有意義的名詞類作爲內實現這一點:
static function IEnumerable<noun> IdentifyAll (P project)
,並做了
CompleteWordList.AddRange(noun.IdentifyAll(p));
在初始化過程中,但是這創造依賴於特定的「名詞」從中央初始化/工廠方法鍵入。然後很難添加更多的詞類而不觸及它。在寫這篇文章時,我感覺自己有點偏向於MEF。
這是一個簡單的例子。也許「短語」或其他類似的基本類型比較合適,但現在必須做。
儘管這些項目是具有可檢查屬性的連接控制節點的網絡(而不是文本文檔),但它非常像解析器。如果有一些通用的解決方案可以避免,那將是一件好事。
這可能是有趣的:http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern –
你可以詳細闡述一下嗎?我在查看你的問題時遇到了一些麻煩。你似乎在問什麼,我很確定我可以寫,所以我可能會問題不對。 「項目」意味着什麼? 「列表」在哪裏?最重要的是,爲什麼任何方法都是靜態的? –
謝謝。我已經添加了一些信息。我確實早些時候添加了該信息,但作爲對提供解決方案的第一個人的評論。他刪除了他的答案,因爲它不適用。但是在這樣做的時候,他也刪除了我的評論。 – Tormod