CleanArchitecture

Clean Architectureメモ 「データ要求」

データ要求の際に、同じようなメソッドを何度も書くことになり
「本当にこんな冗長な書き方するメリットあるの?」とたまに思っちゃうので、
役割を自分なりに整理してまとめておきます。

Usecase

ドメインオブジェクトのみ利用したロジックを記述する。外側のレイヤー使われるデータ形式については一切知らない。

Repository

DataStoreに依存する。内外のデータ形式について知っており、変換の責務を負う。

DataStore

取得要求されたデータを外部の形式のまま返す。

Repositoryの存在意義(個人的見解)

DataStoreは、RealmやCoreData(iosなら)などから実際にデータをフェッチしたりなどの処理で役割が大きいので、変換の役割まで負ってしまうとFat DataStoreになってしまう。

変換責務はRepositoryに負わせることで、関心ごとの分離を図る。