TL;DR

同じデータに作用する集約が複数あるときは、制約を型でモデリングして集約間で共有する。型で表せなければ、検証関数を共有する。

内容

集約は整合性の制約を保証する役割を担う。集約は整合性の境界である。

では、同じデータに作用する集約が複数ある場合、どう整合性を保証すればよいか。たとえば Account 集約と MoneyTransfer 集約は、どちらも口座の残高に作用する。どちらも、残高がマイナスにならないようにしなければならない。

制約を型でモデリングすれば、その制約を複数の集約で共有できる。残高がマイナスにならないという制約なら、NonNegativeMoney 型を作る。型で表せない場合は、検証関数を共有してもよい。

キーワード