Open1
clean architectureに関するあれこれ
各レイヤーについて
Entities
アプリケーションに依存しないビジネスルールをカプセル化した層です。
ECサイトを例にすると、商品、ユーザー、お店などがこのレイヤーに属することになります。
また、このレイヤーは外部のアプリケーションのロジックに影響を受けることがありません。
例えばToDoアプリを作成してるとして、叩かれているAPIがcreateでもupdateでもdeleteでもこのレイヤーには影響がありません。
一言で言えば、業務知識をオブジェクトとして表現したレイヤーになります。
Use Cases
アプリケーション固有のビジネスルールが含まれる層です。
Entities
が実行されるAPIに依存しないビジネスロジックを含んでいるのに対し、Use Cases
ではAPIに依存したロジックを含んでいることになります。
しかし、このレイヤーの変更がEntities
に影響を及ぼすことはありません。アプリケーションの仕様自体が変更されることによってこのレイヤーが影響を受けることは考えられます。
Interface Adapters
この層はブラウザやDBなどのアプリケーション外部世界とやり取りをするためのレイヤーです。例えばControllerなどが含まれます。
Use Cases
やEntities
がデータを使いやすくなるように変換する役割も担っています。
Frameworks and Drivers
DBやブラウザ、外部のAPIどの外部世界を示すレイヤーです