Javaアプリケーション開発をする上で ドメイン駆動設計やらクリーンアーキテクチャやら、デザインパターンやらをよく聞きますが....
それぞれ独立した設計思想なのか? 独立していないとしたら開発においてコイツらはどういう位置付け?
というのをふと疑問に思ったので少し調べて記事にしてみました
ざっくり理解してみる
デザインパターン
- 概要
- 多種プログラムで再利用可能な設計パターンのこと
- Singleton、Factory、Observerと言われる種類がある
- 何のために存在する?
- ソースコードの再利用性を高め、設計を統一にすることで保守性を高める
ドメイン駆動設計(DDD)
- 概要
- ビジネスの複雑な領域(ドメイン)にフォーカスし、そのドメインに基づいてソフトウェア設計を行う手法
- 何のために存在する?
- ビジネスロジックに焦点を当て、ドメイン知識を設計に反映することで、柔軟性や拡張性を向上させる
クリーンアーキテクチャ
- 概要
- ソフトウェアの保守性、拡張性、テスト容易性を重視し、責務を分離するためのアーキテクチャパターンです。円形のレイヤー構造を持ち、中心にはドメイン、外側にはインフラやUIが配置される
- 何のために存在する?
- アプリケーションの層(プレゼンテーション、ドメイン、データアクセスなど)を分離し、依存関係を内側に向かわせることで、変更に強い設計を実現
それぞれの位置付け
- デザインパターン : 実装クラス単位の再利用性を高める
- ドメイン駆動設計 : ビジネスロジックにフォーカスしてソフトウェア設計する
- クリーンアーキテクチャ : アプリ/インフラ/ドメインを分離。アプリケーション層の依存関係を内側に向かせ、変更の依存関係を最小とし変更に強い設計を実現
つまり クリーンアーキテクチャ で ドメイン駆動設計を用いて、実装パターンはデザインパターンを用いる
クリーンアーキテクチャ
アプリケーション全体の設計の枠組みや責務の分離を提供する「大枠」。
ドメイン駆動設計(DDD)
クリーンアーキテクチャの中核(特にドメイン層)を埋めるための「設計思想」。
デザインパターン
クリーンアーキテクチャやDDDを具体的に実装する際に使う「実装のテンプレート」。
今度はそれぞれをソースコードで実践していきたい