6/8 ドメイン駆動設計Chapter14 14-2
14-2 アーキテクチャの解説
ドメイン駆動設計においては、ドメインが隔離されることが重要である
アーキテクチャに従ったから、ドメイン駆動設計が実践されるわけではない
14-2-1 レイヤードアーキテクチャ
最も、伝統的で有名なアーキテクチャです
- プレゼンテーション層(ユーザーインターフェース層)
- アプリケーション層
- ドメイン層
- インフラストラクチャ層
ドメイン層が一番重要な層であり、ソフトウェアに適用しようとしている領域で問題解決に必要な知識を表現します。この層を明示的にして、ドメインオブジェクトを隔離し、他の層への流出を防止します。
アプリケーション層は、ドメイン層の住人を取りまとめる層です。
アプリケーションサービスはドメインオブジェクトの直接のクライアントとなり、ユースケースを実現するための進行役になる。
ドメイン層はドメインの表現に徹しているので、アプリケーションを成り立たせるために、ドメイン層の住人を問題解決に導く必要がある。
所感:ドメイン層=人・物、を表現しているだけで行動はしない。アプリケーション層は人・物を使って実際に行動を起こさせるために存在する指揮者のような存在。
プレゼンテーション層は、ユーザーインターフェースとアプリケーションを結びつける。主な責務は表示と解釈です。システム利用者にわかるように表示を行い、入力を解釈します。
インフラストラクチャ層は、他の層に支える技術基盤へのアクセスを提供する層です。
アプリケーションのためのメッセージ送信や、ドメインのための永続化を行うモジュールが含まれます。
原則として、依存の方向が上から下ということ。
上位のレイヤーは下のレイヤーに依存することが許されるが、逆は許されない。