1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DDD ドメインサービスとは?

Posted at

この記事は、筆者がドメイン駆動設計に関する本をいくつか読んだ結果つかえそうだとおもった知識をまとめるための記事です。

ドメインサービスって?

業務知識の詰まった、ドメインに含めるべき処理であるが、それを直接エンティティや値オブジェクトのメソッドにすることがためらわれる場合につくると便利なサービス。

ためらわれるときって?

ひとつには、複数の集約にまたがった処理をする必要がある場合。ドメインを直接操作してタスクをこなすクライアントでありながら、自身もドメインの知識であるならそれはドメインサービスとする。

ほかにも、単一の集約に対する操作ではあっても、そのメソッドとして記述してしまうと、ユビキタス言語をなめらかに表現したコードにならないとおもわれる場合はドメインサービスとする。

要はドメインのメソッドを切り出したもの?

ドメインサービスはその処理自身が業務知識となるが、無制限にドメインサービスとしてしまうとドメインが貧相になるので、まずはドメインとして記述する方法を模索し、うまくいかなそうなときに慈善の策としてドメインサービスを検討するとよさそう。
また、ドメインサービスは状態をもつこともさけるべきで、状態をもつのであればそれは見えていないエンティティや値オブジェクトの存在をまず疑うとよいとおもわれる。

ドメインのクライアントならアプリケーションサービスでは?

ドメインサービスはあくまでビジネスロジックがつまっていてドメインにすべきものなのでアプリケーションサービスとは異なる。
アプリケーションサービスは、ドメインの業務を成立できるようにサポートすることを目的としているので、ここにドメインの知識をかかないようにする。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?