ファクトリとリポジトリの違い

Eric Evansのドメイン駆動設計に、ファクトリとリポジトリの責務の違いが書かれていた。

ファクトリは新しくオブジェクトを作るのが責務で、リポジトリは古いオブジェクトを再構築するのが責務だ、とのこと。 ファクトリとリポジトリの違いをはっきり意識してなかったので、へえー、となった。

この二つの責務は明確に分けておくべきとのこと。ORMツールには二つの挙動がわからないように隠蔽してしまうものもあるが、それは思いもかけない状態になってしまう場合があるので良くないとも書かれていた。

確かに、RailsActiveRecordは、DBに保存されているオブジェクトなのか新規オブジェクトなのかで挙動が変わることがたまにあって、何度かハマったことがある。そういう点が嫌だなーと思っていたので、エヴァンスのこの意見はそうかもしれないなと思う。

ファクトリ/リポジトリの責務の区別を試してみてもいいかもしれない。

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計