🕌
DDD学習メモ
参考元
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