質問
オブジェクトにデータを入力するファクトリクラスがあります。オブジェクトからの保存を実装したいが、dbスタッフでオブジェクトを設定したくない-クラスを作成する私のファクトリがデータも保存するのは愚かですか?
ie:オブジェクトの.Save()メソッドでFactory.Save(myObject)を呼び出します;
解決
クラス内のデータベースに懸念がある場合-O / Rマッパーの使用を検討しましたか?
これにより、データベースの内容がコードから完全に排除され、ドメインオブジェクトがクリーンになります。
NHibernate またはアクティブレコード。
他のヒント
ファクトリクラスは、新しいオブジェクトの作成に役立つ作成パターンです。
永続オブジェクトを処理するさまざまなパターンがありますが、その1つがデータマッパーです。 http://martinfowler.com/eaaCatalog/dataMapper.html
これは、リポジトリとの推測でよく使用されます http://martinfowler.com/eaaCatalog/repository.html
これらのパターンを使用して、データベースをドメイン/ビジネスオブジェクトから切り離し、アプリケーション内からそれらにアクセスして、オブジェクトを照会および保存できます。
したがって、データマッパー/リポジトリは、永続性の両方の側面(データベースからの取り込みとデータベースへの保存)の両方を担当します。
いいえ、それはまったく愚かではありません。実際、それは誰もがすべき方法です。ビジネスオブジェクトには永続ロジックを含めないでください。
ところで、C#3.0を使用している場合は、Factoryクラスを気にすることさえないかもしれません。拡張メソッドを作成するだけです。こうすることで、永続化コードをビジネスオブジェクトから分離し、myObject.Save()を呼び出すことができます。