■層別アーキテクチャ
- オニオンアーキテクチャ
- クリーンアーキテクチャ
■オニオンアーキテクチャ
ドメインモデルが得たい結果。外側の層から内側に向かって進んでいく
-
ドメインモデル層
->ビジネスエンティティとそれに密接に関連するクラスを扱う -
ドメインサービス層
->複雑なビジネスロジックとワークフローを扱う -
アプリケーションサービス層
->ユースケース(アプリケーション固有のロジック) -
UI/DB/テストなど周辺的な関心ごと
->外部要素、インフラ、デバイスとのインターフェースを提供
■クリーンアーキテクチャ
オニオンアーキテクチャのように、外側の層から内側に向かって進んでいく
オニオンアーキテクチャとは各層での役割が若干異なる
-
エンティティーズ
->エンティティとプラットフォーム共通のビジネスロジック -
ユースケース
->アプリ固有のロジック -
インターフェイスアダプター
->↑と↓へのデータ変換 -
フレームワークとドライバー
->DB、フレームワーク、ツールなど
参考:
https://syobochim.hatenablog.com/entry/2022/06/06/125359
■層別アーキテクチャにおける依存性の注入とは
「依存する構造にする」ということ。(実装クラスに対する抽象クラスを使う)
外側は内側に依存する(どのメソッドを使うか興味がある)
内側は外に依存しない(どのメソッドから呼ばれたか興味がない)
<メリット>
抽象クラスを継承し、ダミーの動きをするモッククラスを実装することで、ユースケース単体でのテストが可能。
- モック=ダミーの動きをさせる仕組み。スタブを提供する
- スタブ=ダミーのエンティティを返却する機能
■層別アーキテクチャのディレクトリ構成
ディレクトリを見るだけで目的がわかる