集約
注文が複数の商品を持つとき、商品の変更は集約ルートである注文単位の変更として実装する
code:fs
type Order {
customerId: number;
details: list of OrderDetail;
}
集約全体で一貫性を保つ必要があり、永続化層にもトランザクション等でmutateする 一方、顧客情報などはidで持つことで、顧客情報の変更ができる
という話があるが、しかし、detailsもidで持ったら、個別の商品の変更ができるわけで
「集約」という概念、および境界は、
その具体的な登場物の特性によって定まらない
型でどのように表現されてるかと
永続化層(RDB等)がどのように設計されてるか
ここらへんで定まると言って良いのでは
こういうことを考えるときに「集約」という言葉が、設計の考えを深めるためにあんまり役に立たない
結果論として、一貫性を保つ境界が定まって、それに集約、と名札をつけることはあるかもしれないが
単一性と同一性で、思考実験的なテストをするほうがいい
階層構造の内側のデータを変更したとき、前後でその概念は
同じであってほしいだろうか?
異なってほしいだろうか?