オブジェクト指向Advent Calendarが空いていたので、せっかくなので投稿します。 概要 先日レイヤー化アーキテクチャとDIPについて共有することがあったのでその内容の焼き直しです。 内容自体は実践ドメイン駆動設計の4章アーキテクチャの前半を自分なりに解釈したものです。 レイヤー化アーキテクチャはシステムの関心ごとをレイヤーごとに分けて疎結合にするためのアーキテクチャです。例を以下に示します。 レイヤー化アーキテクチャの上位のモジュールは下位のモジュールに依存することが許されています。また、図には書いてませんが上位、下位の関係が守れていればアプリケーション層からインフラストラクチャ層への依存といった層を跨いだ依存も許されます。逆に下位のモジュールから上位のモジュールへの依存は許されていません。 課題 レイヤー化アーキテクチャを素直に実装した例を下記に示します。 簡単に説明すると、i