Dot-Net
工廠類屬於哪個命名空間?
我有一個工廠類,
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 命名空間,並使您的文件樹更易於閱讀。
