ドメインオブジェクトのライフサイクル
オブジェクトはメモリ上に存在するだけとは限らない。
データベースに格納されたり、アーカイブされたりとメモリ上のオブジェクトより長く存在することが多い。
そういったオブジェクトのライフサイクルをどう管理するかが6章のテーマ。
課題は2つ
- ライフサイクルを通じて整合性を維持すること
- ライフサイクルを管理するのが複雑でも、モデルが侵食されないようにすること
(第二部第六章より)
解決策は3つのパターン
1. 集約
ライフサイクルのすべてのフェーズにおいて集約の単位で整合性を保つ。
2. ファクトリ
ライフサイクルの始まり。複雑なオブジェクトや集約を生成したり再構成したりする。
3. リポジトリ
ライフサイクルの中期と終わりに対応。永続化されたオブジェクトにアクセスする手段を提供。必要な巨大なインフラストラクチャをカプセル化。
まとめ
- リポジトリとファクトリはドメインには由来しないが、ドメイン設計においては、意味のある役割を持っている。
- リポジトリとファクトリは集約を対象としている。
- 集約が区切るスコープによって不変条件が維持されなければならない範囲が示される。
明日は、集約の詳細を読みます。