Dot-Net

工廠類屬於哪個命名空間?

  • August 24, 2009

我有一個工廠類,DocumentLoaderFactory它只是返回一個實現介面的實例,IDocumentLoader

所有實現都位於以下命名空間下

Skim.Ssms.AddIn.ActiveFileExplorer.Loader

但我想知道的是,DocumentLoaderFactory屬於哪個命名空間?我現在已將工廠類放在*.Loader命名空間下,但它是從ActiveFileWindow父命名空間的使用者控制項 () 中使用的,Skim.Ssms.AddIn.ActiveFileExplorer如下所示。

*.Loader將工廠方法放置在或其父命名空間中的利弊是什麼?我想根據利弊做出決定。

這是我的項目的佈局 替代文字

我會說最好將您的工廠與他們創建的類型放在一起。工廠是某種東西的提供者,應該與其提供的東西相關聯並與之接近。如果您遵循凝聚力規則,那麼您將得出相同的結論。相關的東西應該​​緊密聯繫在一起以保持一個有凝聚力的 API。

因為使用工廠需要的程式碼完全不知道抽象工廠模式中的實現,所以我通常將介面和工廠(加上任何類型資訊)放在根目錄下,然後將實現放在自己的文件夾(或文件夾如果很少有)。

所以在你的情況下,我有類似的東西:

Loader
- DocumentLoaderFactory
- DocumentLoadType
- IDocumentLoader


Loader\Implementation
- NameDocumentLoader
- TypeDocumentLoader
- ConnectionDocumentLoader
- DocumentLoader

我假設 DocumentLoader 是一個抽象基類,由於它的名稱,它繼承了你的介面,但你明白了。我不知道你的其他類“TreeViewImageIndex”是做什麼用的,但如果合適的話,你可以把它放在任何一個地方或完全不同的地方。

這使您的程式碼保持美觀和凝聚力,不需要您的實現類了解 Loader\Implementation 命名空間,並使您的文件樹更易於閱讀。

引用自:https://stackoverflow.com/questions/1319967