私はオブジェクトを持っています:図書館
1 つのライブラリには、複数の本、CD、および論文を含めることができます。各クラスには、Address プロパティを持つ Library クラスを除いて、Id、Name、および Price プロパティがあります。
上のレイヤーからデータが保存されている場所を抽象化するリポジトリパターンを作成したいと思います。現在、データはxmlファイルに保存されています。
<library>
<books></books>
<cds></cds>
<papers></papers
</library>
後で、データベースに保存することを考えています。次に、ライブラリ テーブル、書籍テーブル、CD テーブル、および論文テーブルを作成します。
ユーザーは画面上にライブラリ オブジェクトを作成し、次に画面上に本、CD、および論文を作成します。
次に、[保存] をクリックします。その時点で、新しく作成したライブラリ オブジェクトを取得して XML に保存したいので、リポジトリが必要です。依存性注入を使用して、上のレイヤーに xml リポジトリの実装を挿入し、データが正しい場所に保存されるようにします。ライブラリ オブジェクトをシリアル化して xml を取得し、単純な Save メソッドを呼び出してライブラリ オブジェクトを保存できます。
しかし、XMLRepository を DatabaseRepository に置き換えると想像してください。
その場合、上のレイヤーの残りの部分は変更しないでおきたいと思います。LibraryRepository.Save() が、XML、CSV、または DB のいずれに入れる必要があるかどうかを気にかけていることを願っています。LibraryRepository.Save() メソッドを解決するためにリポジトリ パターンを作成する方法がわかりません。
どこにいても、Repository クラスは単一の責任を持つべきだと言います。1 つのオブジェクト タイプのみを保存する必要があり、オブジェクトを取らず、関連するクラスを取り、それらも保存する必要があります。各クラスには、独自の Repository クラスが必要です。
また、各ライブラリ オブジェクトには複数の Books オブジェクトがあります。for ループを使用して、LibraryRepository.Save メソッドで各本を調べたくありません。
ドメイン モデルを作成し、Library Save() メソッドを呼び出す方法がわかりません。
ガイドしてください。