整合性の担保を集約ルート自身の役割りにしなくてもいい
集約ルート
は
整合性
の単位だとされるが、
整合性
の担保を
集約ルート
自身の役割りにしなくていいのかもしれない。
集約
は少なくとも識別子と状態をもつはず。ここで、状態を表現するためのプロパティを
集約ルート
にするクラスのプロパティとしてフラットに並べるのは、
思い込み
によるものかもしれない。
データベース
・
エンティティ
をそのままオブジェクトにする、という
思い込み
だ。
集約
の状態はそのまま
値オブジェクト
にできる。ここで言う
値オブジェクト
は状態そのもので、単一のプリミティブな値をラップしただけの小さなものではない。
値オブジェクト
というよりは
構造体
と呼ぶ方が適切かもしれない。
code:kotlin
Something(
val id: SomethingId
var status: SomethingStatus
)
こうすれば、
集約ルート
は
Something
であるが、
整合性
の担保は
SomethingStatus
の役割りになる。