🕌

DDD学習メモ

2023/01/21に公開

参考元

YouTube

DDDオンライン勉強会 #1 「モデリング/実装入門」
ライブモデリングとコーディングで理解するDDD (DDD勉強会2021#1)

前提

個人のただのメモ

本編

依存方向

domain ← d service ← use case ← notifier ← page

各層の依存関係

Presentation は Use Case のみに依存する
Infrastructure はUse Case と Domain の両者2つに依存する
Use Case は Domain のみに依存する

getter 名を「中身の処理に依存しない一般的な名称」にする

ex : Repository.save, .update など

ドメインモデル内にバリデーションがないと…

アプリケーション層などの別部分などから新たに自由な関数が定義されて偽ドメインオブジェクトが生成される危険性を許してしまう
ドメインモデル内にバリデーションがあれば、
たとえどんな関数で外側からオブジェクトが生成されても正しいものが作れ、
また、バリデーション内容がドメインモデルのパッケージ1つのみで確認することができる

ドメインモデル図に書けることは全てドメインモデルパッケージ内で完結させられる

「実際にプロのライブコーディングを見る」のが結局一番学びが早いのかもしれない

そういう意味では、やはり動画コンテンツも大きな効率を持つものである

ユーザから直接要求が来るプレゼンテーション層こそ軽くする

その分、ドメイン層には十分なドメインロジックを含み、「ドメインモデル貧血症」を起こさないようにする

Use Case クラスは、ユースケースを組み立てるだけに特化した粒度にするのが理想

つまり、中身の記述は全てドメイン層に入ったものを使用している

Repository はあくまでエンティティの貯蔵庫として扱う

Jsonなどの生データからエンティティを作成する責務はDTO(Data Transfer Object)に任せる

Facade has a same role in entity's Repository

おわりに

以上、個人のメモでした。
初心者ゆえ、ご指摘、アドバイス等ございましたら、是非ともよろしくお願いいたします。

Discussion