/note/tech

集約をイミュータブルに設計し、集約を単独で生成(復元)して計算判断を実行するだけなら、その集約...

集約をイミュータブルに設計し、集約を単独で生成(復元)して計算判断を実行するだけなら、その集約の同一性を判定するロジックは不要。集約自身が同一性の識別情報を持つ必要はない。

集約どうしの比較やコレクション操作では同一性の判定が必要になることもあるが、単独で使うだけなら不要。

@masuda220

単独で扱う集約の内部状態が、変更可能かつ変更結果を集約単位で永続化したい場合は、集約に識別情報を持たせることはある。 しかし、この場合も、集約の生成(復元)と変更結果の永続化をひとつのメソッドで実行するなら、識別情報はメソッドのローカル変数で保持する方法がある。

@masuda220

同一性の担保が必要ないのであればそれは集約でなくてもよいのでは? 感はあって、それはリッチなバリューオブジェクトですとも言えそう。