ドメイン駆動設計
つまりDDDとはなんだ?
開発者とドメインエキスパートが協業してプロダクトを開発しようとすること、に見える
そのためにはメンタルモデルが必要で、それがユビキタス言語になる
エンティティと値オブジェクトを中心にドメインモデル図を作成する
プロダクトとして動かすためにオニオンアーキテクチャなどを利用する
まだメモの段階
定義ではないが
ドメインの概念や事象を理解し、その中から問題解決に役立つものを抽出して得られた知識をソフトウェアに反映する行為
ドメインの概念
利用者を取り巻く知識
プログラムを適用する対象となる領域
ドメインモデル
現実の事象あるいは概念を抽象化した概念
ペンを例にする
ペンを商品と見るか、文字が書ける道具として見るか
それはプロダクトによって異なる
物流システム
トラックは荷運びできることが重要
トラック製造システム
エンジンキーを回すとエンジンがかかる、が重要
ドメインオブジェクト
知識をコードで表現する
ドメインオブジェクトを考えることで、ドメインモデルやドメインの概念が更新されることもある
ドメイン駆動設計のパターン
知識を表現するパターン
値オブジェクト
エンティティ
ドメインサービス
アプリケーションを実現するためのパターン
リポジトリ
アプリケーションサービス
ファクトリ
知識を集約する、より発展的なパターン
集約
仕様
https://scrapbox.io/files/667f69167c75e9001cae8220.png
成瀬 允宣. ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本 (p.39). 株式会社翔泳社. Kindle 版.
ファクトリ
オブジェクトの生成に関わる知識がまとめられたパターン
Repositoryと同じレイヤー?
Service側で、まずFactoryでインスタンスを生成してから、ビジネスロジックを描く