7

ファクトリクラスがあります。DocumentLoaderFactoryこれは、インターフェイスを実装するインスタンスを返すだけIDocumentLoaderです。

すべての実装は、次の名前空間の下にあります

Skim.Ssms.AddIn.ActiveFileExplorer.Loader

しかし、私が疑問に思っているのは、どの名前空間がDocumentLoaderFactory属しているのかということです。今のところ、ファクトリクラスを名前空間の下に配置しましたが、以下に示すように、親名前空間の*.Loaderユーザーコントロール()から使用されています。ActiveFileWindowSkim.Ssms.AddIn.ActiveFileExplorer

*.Loaderファクトリメソッドをその親名前空間内またはその親名前空間に配置することの長所と短所は何でしょうか?賛否両論に応じて決めたいと思います。



これが私のプロジェクトのレイアウトです 代替テキスト

4

3 に答える 3

10

私はあなたの工場を彼らが作成するタイプと同じ場所に配置するのが最善だと思います。工場は何かの提供者であり、それが提供するものに関連付けられ、近接している必要があります。結束のルールに従えば、同じ結論に達するでしょう。一貫性のあるAPIを維持するには、関連するものを互いに近づける必要があります。

于 2009-08-24T00:30:51.423 に答える
5

ファクトリのニーズを使用するコードには、抽象ファクトリパターンの実装に関する知識がまったくないため、通常、インターフェイスとファクトリ(およびタイプ情報)をルートに配置し、実装を独自のフォルダ(またはいくつかあります)。

だからあなたの場合、私は次のようなものを持っています:

Loader
- DocumentLoaderFactory
- DocumentLoadType
- IDocumentLoader


Loader\Implementation
- NameDocumentLoader
- TypeDocumentLoader
- ConnectionDocumentLoader
- DocumentLoader

DocumentLoaderは、その名前のためにインターフェイスを継承する抽象基本クラスであると想定しましたが、あなたはその考えを理解しています。他のクラス「TreeViewImageIndex」の目的はわかりませんが、適切な場合は、別の場所または完全に異なる場所に配置できます。

これにより、コードが適切でまとまりがあり、実装クラスがLoader \ Implementation名前空間について知る必要がなくなり、ドキュメントツリーが読みやすくなります。

于 2009-08-24T01:09:15.320 に答える
2

IDocumentLoader実装で作業するときに見つけやすくなるため、**。Loader*名前空間のままにしておくとよいでしょう。

于 2009-08-24T00:28:12.047 に答える