オブジェクトにデータを設定するファクトリ クラスがあります。オブジェクトからの保存を実装したいのですが、オブジェクトに db のものを入力したくありません。クラスを作成する Factory にデータも保存させるのはばかげていますか?
つまり、オブジェクトの .Save() メソッドで Factory.Save(myObject); を呼び出します。
ファクトリ クラスは、新しいオブジェクトの作成に役立つ作成パターンです。
持続オブジェクトを扱うさまざまなパターンがあり、そのうちの 1 つがデータ マッパー http://martinfowler.com/eaaCatalog/dataMapper.htmlです。
これは、Repository http://martinfowler.com/eaaCatalog/repository.htmlとの推測でよく使用されます。
これらのパターンを使用して、ドメイン/ビジネス オブジェクトからデータベースを抽象化し、アプリケーション内からそれらにアクセスして、オブジェクトのクエリと保存を行うことができます。
したがって、データ マッパー/リポジトリは、永続性の両方の側面 (データベースからの入力とデータベースへの保存) を担当します。
クラス内のデータベース関連が気になる場合、O/R マッパーの使用を検討したことはありますか?
これにより、データベースの要素がコードから完全に除外され、ドメイン オブジェクトがクリーンになります。
多分NHibernateまたはActive Recordを見てください。
いいえ、まったくばかげているわけではありません。実際、それは誰もが行うべき方法です。ビジネス オブジェクトには永続化ロジックを含めないでください。
ところで、C# 3.0 を使用している場合は、Factory クラスを気にすることさえないかもしれません。拡張メソッドを作成するだけです。そうすれば、持続性コードをビジネス オブジェクトから分離したまま、myObject.Save() を呼び出すことができます。