集約(Aggregate)
#設計
/mrsekut-p/Aggregate
DTO
アグリゲート(Aggregate)、アグリゲートルート
#『テスト駆動開発をやめて、なお残すべき習慣とは』
集約の実装について考えてみた
集約で大切な考え方として以下の点が挙げられると考えています。
整合性の確保が必要な境界である。
集約内部の変更は必ず集約ルートを経由することで集約内を常に整合性が確保された状態にする。
集約ルートの単位でデータの取得・永続化を行う。
もし集約ルート以外の変更を許可してしまうと、整合性を確保するための処理が利用側に委ねられてしまい、整合性が崩された状態で永続化されてしまう恐れがあります。集約ルート以外のドメインオブジェクト単体での永続化を許可してしまった場合も同様です。
ドメイン駆動設計の集約のわかりにくさの原因と集約を理解するためのヒント - ソフトウェア設計を考える
集約パターンがわかりにくいのは、本来はドメインロジックの複雑さを整理しクラスの組み合わせで表現する設計パターンである集約を、永続化やデータ整合性という別の関心事とからめて説明しているためです。
集約を理解するには、まず、集約を永続化の関心事から切り離して考えたほうがわかりやすくなります。
集約を永続化の関心事から切り離す