🌟
[Flutter]リポジトリパターン
MVVM で使われているのを見る Repository パターンを調べたのでまとめます。
Repository パターン
リポジトリは、データソースにアクセスするために必要なロジックをカプセル化したクラスやコンポーネントのこと。
データベースにアクセスするためにインフラや技術をドメインモデルから切り離すことができる。
リポジトリはデータベースに格納されたオブジェクトのセットと、それに対して実行可能な操作をカプセル化し、永続化レイヤーに近い方法を提供する。
データベースを更新するために使用する唯一のチャンネルは、リポジトリにすべき
テーブルごとにリポジトリを作成するのではなく、aggregate ごとにリポジトリを作成する。
aggregate
クライアント側で処理するデータの塊のこと。
この aggregate 内のすべてのオブジェクト間でトランザクションの一貫性を維持するために、リポジトリはテーブルごとに作成するのではなく、aggregate ごとに作成する。
Microsoft Ignite より
Repository パターンでテストが簡単になる
ユニットテストはコードのテストであって、インフラのテストではない。
そのため、DI によって DB からのデータの代わりに仮データを返す mock repository を用意することができる。
これにより、DB への接続なしにアプリケーションのロジックをテストできる.
Flutter と組み合わせたときのイメージ
こちらの図がイメージとしてわかりやすかった。
GitHub のリポジトリもあるので、実装の際のディレクトリ構成の参考にしたい。
Flutter Architecture Blueprints より
Discussion