🌟

[Flutter]リポジトリパターン

2022/09/25に公開

MVVM で使われているのを見る Repository パターンを調べたのでまとめます。

Repository パターン

リポジトリは、データソースにアクセスするために必要なロジックをカプセル化したクラスやコンポーネントのこと。

データベースにアクセスするためにインフラや技術をドメインモデルから切り離すことができる。

リポジトリはデータベースに格納されたオブジェクトのセットと、それに対して実行可能な操作をカプセル化し、永続化レイヤーに近い方法を提供する。

データベースを更新するために使用する唯一のチャンネルは、リポジトリにすべき

テーブルごとにリポジトリを作成するのではなく、aggregate ごとにリポジトリを作成する。

aggregate

クライアント側で処理するデータの塊のこと。
この aggregate 内のすべてのオブジェクト間でトランザクションの一貫性を維持するために、リポジトリはテーブルごとに作成するのではなく、aggregate ごとに作成する。


Microsoft Ignite より

Repository パターンでテストが簡単になる

ユニットテストはコードのテストであって、インフラのテストではない。

そのため、DI によって DB からのデータの代わりに仮データを返す mock repository を用意することができる。

これにより、DB への接続なしにアプリケーションのロジックをテストできる.

Flutter と組み合わせたときのイメージ

こちらの図がイメージとしてわかりやすかった。

GitHub のリポジトリもあるので、実装の際のディレクトリ構成の参考にしたい。


Flutter Architecture Blueprints より

参考

GitHubで編集を提案

Discussion