アーキテクチャパターンを順番に理解する
3層アーキテクチャ
https://scrapbox.io/files/668a1e42b0b2c2001c75ab13.png
ビジネスロジック部分にロジックが集中しがち
関心ごとが違うロジックが低凝集、高結合になってしまう
レイヤードアーキテクチャ
ビジネスロジック層をユースケースを実現する層とドメイン知識を表現する層にわける
https://scrapbox.io/files/668a1f05d1065b001c2ca276.png
課題
ドメイン層がインフラ層に依存してしまう
オニオンアーキテクチャ
レイヤードアーキテクチャから依存関係逆転の原則を用いてドメイン層とインフラ層の依存関係を逆転させたもの
リポジトリのインタフェースはドメイン層に、実装クラスはインフラ層に定義する
https://scrapbox.io/files/668a20286f5ef5001db5c097.png
ヘキサゴナルアーキテクチャ(ポートアンドアダプターアーキテクチャ)
アプリケーションと外の世界がコミュニケーションをする際は、専用のポートとアダプターを作成して通信させるという思想
https://scrapbox.io/files/668a210502071a001dde703e.png
ヘキサゴナルアーキテクチャの思想をもとにレイヤーを詳細かしたものがオニオンアーキテクチャ
クリーンアーキテクチャ
上記の概念を統合しようとしたもの
https://scrapbox.io/files/668a21449230f1001cd57422.png
考えた疑問
MVCパターンやMVVMパターンとはどう違うねん!
そもそもUIロジックとビジネスロジックを分離するためのアーキテクチャパターン
アプリケーション全体のアーキテクチャパターンとは少し粒度が違う
とはいえ一部適用などは可能
MVCパターンは、おそらく3層アーキテクチャパターンとほぼ同じ
ビジネスロジックが高結合になってしまう
Elmアーキテクチャは?
これもフロントエンド寄りの課題を解決するためのアーキテクチャパターン
https://scrapbox.io/files/668a26aff394c6001c4f5c66.png