ファクトリ(Factory)(DDD)

参考書籍一覧(Amazon アソシエイトリンク)

ドメインオブジェクトの生成に責任を持つ存在。

ドメインオブジェクトはデータソースと結びつかない存在のため、ドメインオブジェクトを生成する場合に橋渡しする必要がある。ドメインオブジェクト自身がその役目を担うとドメインオブジェクト自身の責務に生成の処理が紛れ込むことになる。かといって、ドメインオブジェクトを利用する側で橋渡しの役目を担おうとするとドメインオブジェクトの内部構造を理解していなければならなくなる。

そのため、第三者として橋渡しをする存在が必要となる。DDDではこの存在をファクトリという。

ファクトリのあり方についていくつかパターンがある。

  • ファクトリとして独立したクラスを用意して、対応する集約を生成する
  • 集約ルートがファクトリメソッドを持ち、子エンティティなどの生成をして自身に所属させる
  • 集約ルートがファクトリメソッドを持ち、別の集約を生成する
  • ドメインオブジェクトではないがデータを持つオブジェクトにファクトリメソッドを持たせ、集約を生成させる

いずれの方法のファクトリを作るにせよ、集約のクラス不変表明に違反しない形で生成できなければならない。