9/12

ドメインサービスがリポジトリーの保存や削除のメソッドを使用するのはあまり良くないでしょうか?
リポジトリーの保存や削除はユースケース層が使用するイメージがあってなんか不自然さをかんじるのですがこれは固定観念ですかね?

私は良いと思っています。ドメインサービスの定義から考えてみます。 ドメインサービスは「エンティティ、値オブジェクトとしてモデリングすると不自然なドメイン知識(ルール/制約)を実現する物」という定義です。その代表例が、集合に対する操作です。 例えば「予約」というエンティティを定義したとき、「この時間に予約が既に埋まっているか」というのは「予約」エンティティ自体が知っているとするのは不自然です。ですが、これはドメイン層の知識として実装したい場合にドメインサービスという物を定義することになります。と、すると、この集合に対する操作を行うためにドメインサービスからはリポジトリをどうしても使用する必要が発生します。そう考えると、ドメインサービスがリポジトリを使用すること自体は必要なことかな、と考えています。 ドメインサービスがドメイン層の知識としての手続きを表現する物であり、ユースケースはユースケースの実現するものと考えれば、矛盾はないのではないかな、と考えます。 他に、実装面で何か大きな不利益がなければ良いかと思いますので、「不自然、固定観念」だけではなく、「具体的に何がおかしいか、困るか」というところまで言語化できると、検討の次のステップに進めると思います。

スポンサーリンク

スポンサーリンク

スポンサーリンク