エリック・エヴァンス ドメイン駆動開発P.104 ソフトウェア表現されたモデル サービス
ドメインから生まれる概念の中には、オブジェクトとしてモデル化すると不自然なものもある。こうしたドメインで必要な機能をエンティティや値オブジェクトの責務として押し付けると、モデルに基づくオブジェクトの定義を歪めるか、意味のない不自然なオブジェクトを追加することになる。
【中略】
優れたサービスには3つの特徴がある【中略】
ドメインにおける重要なプロセスや変換処理が、エンティティや値オブジェクトの自然な責務ではない場合、その操作は、サービスとして宣言される独立したインタフェースとしてモデルに追加すること。モデルの言語を用いてインタフェースを定義し、操作名が必ずユビキタス言語の一部になるようにすること。サービスには状態を持たせないこと。
サービスの責務は、気を抜くとどんどん大きくなる。エンティティや値オブジェクトの責務をサービスに書いてしまう。それは、どうしても仕様を手続き的に分析し、それをもとにサービスを書いていくという点がある。そうならないよう、ドメインモデルとユースケースや業務フローと行ったり来たりしながら、モデルにフィードバックをしていく必要がある。