複数のエンティティをまたがるビジネスルールの実装
ビジネスルールを実装するとき、特定のエンティティで収まるであればドメインモデルでの実装は簡単。では、複数のエンティティにまたがるビジネスルール(以後複雑なビジネスルール)を実装する場合、どのように取り扱っていますか?
多くの場合はビジネスルールをドメインモデルの外側に持っていくことで対処しているのでないでしょうか?
しかし、ここで僕は言いたい。
「ドメインモデルをもっとリッチにしようよ」
「そのロジック ドメインモデルで使えるようにしようよ」
確かに、ドメインモデルで複雑なビジネスルールをリソースやイベントのエンティティで実現しようとするとクラス間の結合度があがりすぎ破綻すような話は多い。それなら、エンティティに含めないでビジネスルールを独立のクラスとしてしてしまえばいいだけの話。ドメインモデルでも疎に扱うことはいくらでもできる。あとはドメインモデル内でサービスを作成し複雑なビジネスルールを取得し実行するだけだ。