Domain Service
Domain Serviceとは
Domain Serviceは、重要な業務上の操作でありながら、特定のEntityやValue Objectの責務として自然に置けない振る舞いを表すドメインモデルの要素です。
Domain Serviceはいつ使う?
推奨
重要なドメイン操作が一つのEntityやValue Objectに自然に属さない場合に限って使う。
なぜ
無理に一つのEntityへ置くより意味が明確になりますが、使いすぎるとデータと振る舞いが分離した貧血ドメインモデルになります。
判断基準
- 複数のドメインオブジェクトが関与する
- 操作自体がドメインの語彙である
- アプリケーションの手順やI/Oではない
BAD
Orderの全ロジックをOrderServiceへ移し、Orderをgetter/setterだけにする。
GOOD
複数口座間の振替可否を判定するTransferPolicy。
図:AGGREGATEの変更経路
外部のユースケース
変更を依頼する
AGGREGATE BOUNDARY
Aggregate Root
不変条件を守る入口
Entity
同一性で追跡する
Value Object
値で等価性を決める