2次元レイヤリング
PofEAA とかJ2EE系の本にはレイヤリングの例として、プレゼン層→ビジネスロジック→データソース みたいな軸で考えたレイヤが出てくる。(名称は適当)
しかし抽象度を軸とした全く別のレイヤ分けもある(RUP等に出てくる)。アプリケーション固有→ドメイン固有 → プラットフォーム固有 といった軸でレイヤ分けをしている。 もっと判りやすく言い換えるとUC → ドメイン → FW みたいな感じか。
2つの軸でレイヤを分ければいいのではと思う。ちょっと整理してみると、
|プレゼン| BL |データソース| -------------------------------------- UC | | | | -------------------------------------- ドメイン| | | | -------------------------------------- FW | | | | --------------------------------------
ずれずれだけど*13×3のマトリクスでわかりやすい*2
この表で、UC固有のビジネスロジックはいわゆるコントローラ、ドメイン固有のビジネスロジックはPofEAAにおけるDomainLogic、といった具合にスッキリ整理できる気がする。相互依存関係の解消を考える時もやりやすい。小さなアプリではドメインの層を縮退させてデータソースだけにすることもできる。
またソフトウェアの再利用性を考える時は、この図の左右の軸の依存関係はそれほど重要でなく、上からの下への依存関係を守ることが重要だと思う。