Enterprise Business Rules
黄色のレイヤーの Enterprise Business Rules はビジネスロジックを表現するオブジェクトが所属するレイヤーです。
トランザクションスクリプトやドメイン駆動設計でいうところのエンティティなどはここに所属します。
このレイヤーは最も大事なものです。
Application Business Rules
赤いレイヤーは Application Business Rules です。
このレイヤーは「ソフトウェアが何ができるのか」を表現します。
Enterprise Business Rules に所属するオブジェクトを協調させ、ユースケースを達成します。
ドメイン駆動設計でいうところのアプリケーションサービスなんかはここの住人です。
Interface Adapters
緑色のレイヤーは Interface Adapters で入力、永続化、表示を担当するオブジェクトが所属します。
入力とは Application Business Rules に伝えるためのデータ加工を指します。
永続化とはデータの保存を指します。
表示は結果の表示です。
一般的な MVC フレームワークや単体テストクラスなどはこのレイヤーに所属されます。
Frameworks & Drivers
Web フレームワークやデータベース操作オブジェクトなどのギークなコードがここに収まります。
フロントエンドの UI などもここに所属しています。
黄金律
内側の層は外側の層に依存してはならない!!!!
以下のフローは普通に実装してしまったらusecaseがrepositoryに依存してしまう
依存関係逆転の原則
隠蔽
結果的なクリーンアーキテクチャ
利点
- 依存性が少ないのでテストがしやすい
- 疎結合だからメンテナンスがしやすい
- 変更があった時に変更箇所の外側の範囲内だけに留めれる