私は最近、同僚と議論しました。彼は、ドメイン駆動設計では、エンティティはその状態を変更しない動作を持つべきではないと主張しました。これまでの経験では、この制限について聞いたことがありません。それは有効な DDD ルールですか?
いくつかのコンテキスト (簡略化されたシナリオ) を示すために - 私たちのドメインには、プロセスを開始できるコンピューター エンティティがあり、統合レイヤーは実際にそれをリモートの物理コンピューターに委任し、そこでプロセスを開始します。
では、エンティティStartProcess
の動作である必要がありますか? または、エンティティComputer
の状態に直接影響しないため、ドメイン サービスに含める必要がありますか? Computer
(プロセスが終了すると間接的に状態が変更され、データがシステムに同期されます)。
私にとって、エンティティはユビキタス言語に従っているため、自然な場所ですが、誰かが反対する正当な理由(または他の理由)を持っているかどうか疑問に思っています。