私は自由時間に単純なデータ ストレージ プロジェクトでファクトリ パターンを使用して、ファクトリ パターンに頭を悩ませることに取り組んでいます。アイデアは、単純なデータを取得し、VB.NET の単純なファクトリ パターンを使用してデータベースに保存することです。パターン自体の基本的な理解はできていると思いますが、苦労しているのは、ファクトリ クラスをアーキテクチャにきれいに適合させる方法です。このプロジェクトには、基本的に次のような標準の 3 層アーキテクチャがあります。
プレゼンテーション
-Presentation.Common
-Presentation.DataStorageWebAppName
仕事
-BusinessLayer.Common
-BusinessLayer.DataStorageAppName
データ
-DataLayer.Common
-DataLayer.DataStorageAppName
一般
-Common
-Common.DataStorageAppName
インターフェース
-Interfaces.Common
-Interfaces.DataStorageAppName
アプリケーションの設計に問題がある特定のシナリオを強調するために、例を挙げましょう。ビジネス層で、BusinessLayer.DataStorageAppName DLL に Foo というクラスを作成するとします。これには、Interfaces.DataStorageAppName DLL に存在するインターフェイス IFoo があります。単純なファクトリ パターンを使用してインターフェイス IFoo を介してクラス Foo のインスタンスを作成するには、現在、BusinessLayer.DataStorageAppName に Factory クラスを作成し、共有/静的メソッドを記述して、IFoo インターフェイスを介してインスタンスを作成します。後で、私が理解しているように、(理論上) 他に多くのことをする必要なく、この Factory クラスが返すオブジェクトを交換することができました。
要点を言えば、これは機能しますが、循環参照を回避できるように、いくつかの Factory クラスを作成することを余儀なくされています。基本的に DLL ごとに 1 つです。キャッスルウィンザーなどのサードパーティのソリューションを使用せずに、これらのファクトリクラスを実装するよりクリーンな方法はありますか?ここでは基本的な概念が欠けているようです。オブジェクトインスタンスの配布を担当するアーキテクチャで、単一の「リポジトリ」を持つことが可能であるように思われます。
前もって感謝します!