私はこのパターンについてググりすぎて、自分自身を混乱させていると思うので、あなたの意見をいただければ幸いです.
小さなアプリケーション用のデータベースがある場合、これは次のようになります。
- 会社
- 名前
- 住所
- テンプレートファイルパス
- デパートメント
- 名前
- 住所
- レポート番号
- 事件
- レポート番号
- 位置
- ドライバーの姓
- 日にち
基本的に、モデル オブジェクトを JSON にシリアライズおよびデシリアライズするコードを既にいくつか作成していますが、コードは乱雑で密結合です。これは基本的に抽象化したいので、あとでDBを使うことになったときに、アプリケーションの成長に合わせて切り替えるのは比較的簡単です。
リポジトリを作成するとしたら (単一のリポジトリではないと思います)、メソッド シグネチャはどのようになりますか? インターフェイスを使用しますか? これが私が始めたことです:
IRepository<T>
Add(T Entity)
Delete(T Entity)
Update(T Entity)
ICustomerRepository : IRepository<Customer>
GetAllCustomers()
GetCustomerByName(string name)
IDepartmentRepository : IRepository<Department>
GetAllDepartments()
GetDepartmentByName(string name)
それから私は考え始めました、私は DRY コードを書くつもりはありません... 顧客と部門のリポジトリは基本的に同じことをしています.唯一の違いはメソッド名と実際の DB テーブルまたは情報が保存されているファイルです.私はそれを正しくやっていますか?
私が読んだことから、リポジトリは実際のストレージの単なるラッパーです。SQLite を使用している場合と同様に、リポジトリで接続を作成し、通常のコードでは Customer および Department クラスのみを処理し、SQL 接続またはデシリアライズの方法については何も知らず、リポジトリについてしか知りません。