ドメイン駆動設計では、ドメイン サービスには、本来はエンティティ内に属さない操作を含める必要があります。
エンティティごとに 1 つのサービスを作成し、その中にいくつかのメソッド (Organization
エンティティとOrganizationService
サービス)をグループ化する習慣がありました。
しかし、考えれば考えるほどOrganizationService
、「組織」はサービスではなく、物です。
そのため、現在、組織全体を複製する組織のディープ コピー機能を追加する必要があるため、それをサービスに入れたいと考えています。
すべきこと: OrganizationService::copyOrganization(o)
?
または、次のことを行う必要がありますOrganizationCopyService::copyOrganization(o)
。
より一般的には、「サービス」はいくつかの操作を含む抽象的な概念ですか、それともサービスは具体的な操作ですか?
編集:最初のものはそれほど良くなかったので、より多くの例:
StrategyService::apply()/cancel()
またはStrategyApplicationService::apply()/cancel()
?(ここでの「アプリケーション」はアプリケーション層とは関係ありません;)CarService::wash()
またはCarWashingService::wash()
?
これらすべての例で、最も具体的なサービス名が最も適切と思われます。やはり、実生活では「洗車サービス」というのは理にかなっています。でも、サービスがいっぱいになってしまうかも…。
※注:これは意見を求める質問ではありません!これは、ドメイン駆動設計の方法論に関する正確で回答可能な質問です。「私はすべきか」と尋ねるとき、私はいつも僅差の投票にうんざりしていますが、物事を行うための DDD の方法があります。