D D D_ アグリゲート

2013年4月23日

アグリゲートはドメイン駆動設計におけるパターンです。DDDアグリゲートは、1つのユニットとして扱えるドメインオブジェクトのクラスタです。注文とそのラインアイテムを例に挙げると、これらは別々のオブジェクトになりますが、注文(ラインアイテムを含む)を1つのアグリゲートとして扱うことが有用です。

アグリゲートは、そのコンポーネントオブジェクトのうちの1つをアグリゲートルートとします。アグリゲート外の参照はアグリゲートルートにのみ向かうべきです。ルートはこのようにアグリゲート全体の一貫性を確保できます。

アグリゲートはデータストレージの転送の基本要素です。アグリゲート全体を読み込んだり保存したりします。トランザクションはアグリゲートの境界を超えるべきではありません。

DDDアグリゲートはコレクションクラス(リスト、マップなど)と混同されることがあります。DDDアグリゲートはドメインコンセプト(注文、診察、プレイリスト)であるのに対し、コレクションは汎用的です。アグリゲートには、簡単なフィールドに加えて、複数のコレクションが含まれることがよくあります。「アグリゲート」という用語は一般的な用語で、DDDアグリゲートと同じ概念を指さないさまざまなコンテキスト(たとえばUML)で使用されます。

詳細については、ドメイン駆動設計を参照してください。