0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Flutter】層別アーキテクチャ + RiverPodメモ

Last updated at Posted at 2024-07-17

■層別アーキテクチャ

  • オニオンアーキテクチャ
  • クリーンアーキテクチャ

■オニオンアーキテクチャ
ドメインモデルが得たい結果。外側の層から内側に向かって進んでいく

  • ドメインモデル層
    ->ビジネスエンティティとそれに密接に関連するクラスを扱う

  • ドメインサービス層
    ->複雑なビジネスロジックとワークフローを扱う

  • アプリケーションサービス層
    ->ユースケース(アプリケーション固有のロジック)

  • UI/DB/テストなど周辺的な関心ごと
    ->外部要素、インフラ、デバイスとのインターフェースを提供

image.png

■クリーンアーキテクチャ
オニオンアーキテクチャのように、外側の層から内側に向かって進んでいく
オニオンアーキテクチャとは各層での役割が若干異なる

  • エンティティーズ
    ->エンティティとプラットフォーム共通のビジネスロジック

  • ユースケース
    ->アプリ固有のロジック

  • インターフェイスアダプター
    ->↑と↓へのデータ変換

  • フレームワークとドライバー
    ->DB、フレームワーク、ツールなど

image.png

参考:
https://syobochim.hatenablog.com/entry/2022/06/06/125359

■層別アーキテクチャにおける依存性の注入とは
「依存する構造にする」ということ。(実装クラスに対する抽象クラスを使う)
外側は内側に依存する(どのメソッドを使うか興味がある)
内側は外に依存しない(どのメソッドから呼ばれたか興味がない)

<メリット>
抽象クラスを継承し、ダミーの動きをするモッククラスを実装することで、ユースケース単体でのテストが可能。

  • モック=ダミーの動きをさせる仕組み。スタブを提供する
  • スタブ=ダミーのエンティティを返却する機能

■層別アーキテクチャのディレクトリ構成
ディレクトリを見るだけで目的がわかる

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?