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