ドメイン モデルで動作するサービス レイヤーを備えたアプリケーションを開発しています。Employee
現在の設計では、ドメイン オブジェクトをサービス レイヤーに渡しています (たとえば、 を呼び出すときにドメイン オブジェクトを返しますEmploymentService.getEmployee()
が、オブジェクトに対して実行される操作はサービスを経由する必要がありEmploymentService.transferEmployee( int employeeId, int newLocationId)
ます (例はでたらめです)。
これは私には少し間違っているように感じます。1つは、手続き型プログラミングのようです。2 つ目は、ドメイン オブジェクトにはEmployee.setLocationId
、従業員を仮想的に異動させるために必要なさまざまなシステムを調整するための複雑な操作のすべてがサービス層にあるため、クライアントが呼び出すことができるセッターがあり、従業員を新しい場所に異動させることはもちろんありません。
セッターをクライアントから隠すことができれば、これについては気分が良くなりますが、異なるパッケージの ServiceLayer と DAO の両方がドメイン オブジェクトのセッターにアクセスできる必要があります。
この種のものは大丈夫ですか、それとももっと良い方法がありますか?(また、基礎となるドメイン モデルを備えたサービス レイヤーの実際の例を歓迎します!)
また、Anemic Domain Model アンチパターンを読んだことがありますが、その罠に陥っているとは思いませんが、完全にはわかりません!